1

如果这是重复的,我很抱歉,但我确实寻找答案无济于事。

我有个约会。这是一个对象,我已将其转换为字符串:

$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 月 [嗯?])

我究竟做错了什么?

-鲍勃

4

5 回答 5

4
$date = substr_replace($date,' ',2,3);

不知道为什么你需要这么奇怪的格式

于 2012-05-03T15:11:38.803 回答
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);
于 2012-05-03T15:06:44.383 回答
1

从一个不完整的日期开始,10/2013您需要进行一些字符串操作才能将其放入mmyy. 如果您实际上不需要时间戳输出,则根本不需要将其转换为任何类型的日期对象或时间戳。您只能进行字符串操作。

list($month, $year) = explode("/", $date);
$newdate = $month . substr($year, 2);
// 1013

编辑(来自评论):如果月份并不总是两位数,但您的输出需要 2 位数的月份,请使用:

$newdate = str_pad($month, 2, "0", STR_PAD_LEFT) . substr($year, 2);
于 2012-05-03T15:06:04.330 回答
0

您应该能够直接转换 $date 字段:

 $e = date('m/Y', strtotime($date));

如果没有,那么这应该工作

 $e = date('m/Y', strtotime(((string)$date)));
于 2012-05-03T15:11:14.890 回答
0

$exp = date("my");

其中my表示“月”“年”。

于 2012-05-03T15:15:43.310 回答