在 PHP 中将 mm/yyyy 转换为 mmyy


Convert mm/yyyy to mmyy in PHP

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

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

$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的意思是"月"年"。