我有一个存储在 MySQL 中的日期为 2012-11-00,我正在尝试对其进行转换,以便可以在 PHP 页面上正确格式化它。当我使用以下内容时,我总是落后一个月。因此,如果 MySQL 中的日期是 2012-11-00,那么 PHP 的结果是 2012 年 10 月。
date("M Y", strtotime($resVal['dateField']))
关于它为什么这样做的任何想法?
为什么不保存日期2012-11-01
?
因为2012-11-00
是“无效的”,所以对于 PHP,该日期等于2012-10-31
.
使用DateTime::createFromFormat
which 可以轻松处理您的(奇怪的)格式:
echo DateTime::createFromFormat('Y-m-|??', '2012-11-00')->format('M Y');
将返回Nov 2012
使用DATE_FORMAT函数在 MySQL 中格式化日期:
SELECT DATE_FORMAT(date_field, '%b %Y')
FROM table
将日期另存为“2012-11-01”,因为 2012-11-00 无效。
2012-11-00 不是有效日期 2012-11-01 是一个日期......所以它可能四舍五入到 2012-10-31