如果这是重复的,我很抱歉,但我确实寻找了一个无济于事的答案。
我有一个约会。它是一个对象,我已将其转换为字符串:
$exp = (string)$date;
此变量显示为:10/2013
但是当我尝试使用以下代码将 mm/yyyy 格式转换为 mmyy 时:
$ex = date($exp);
$e = date('m Y',$ex);
。我不仅收到以下错误通知:
Notice: A non well formed numeric value encountered in ...
。但我的日期也改为:1269
(如 1969 年 12 月[嗯?
我做错了什么?
-鲍勃
$date = substr_replace($date,' ',2,3);
不知道为什么你需要这么奇怪的格式
date()
函数接受 Unix 时间戳作为其第二个参数。如果它不能将其识别为数字,则可以将其视为0
(表示纪元,1969 年 12 月 31 日)。要创建时间戳,我想你的意思
$ex = strtotime($exp);
而不是
$ex = date($exp);
但即便如此,"10/2013"也不是strtotime()
接受的日期格式。
您可以使用旧的日期格式创建时间戳,如下所示:
$exp = '10/2013';
$date = explode('/', $exp);
$ex = mktime(0, 0, 0, $date[0], 1, $date[1]);
$e = date('m Y',$ex);
从像10/2013
这样的不完整日期开始,您需要进行一些字符串操作才能使其进入mmyy
。 如果您实际上不需要时间戳输出,则根本不需要将其转换为任何类型的日期对象或时间戳。 您只能进行字符串操作。
list($month, $year) = explode("/", $date);
$newdate = $month . substr($year, 2);
// 1013
编辑(来自评论):如果月份并不总是两位数,但您的输出需要两位数的月份,请使用:
$newdate = str_pad($month, 2, "0", STR_PAD_LEFT) . substr($year, 2);
您应该能够直接转换$date字段:
$e = date('m/Y', strtotime($date));
如果没有,那么这应该有效
$e = date('m/Y', strtotime(((string)$date)));
<</div>
div class="answers">$exp = date("my");
其中my
的意思是"月"年"。