在PHP中将特定字符串转换为时间

在PHP中将特定字符串转换为时间,php,date,strtotime,Php,Date,Strtotime,我需要将字符串转换为日期格式,但它返回了一个奇怪的错误。字符串如下所示: 21 nov 2012 我用过: $time = strtotime('d M Y', $string); PHP返回了错误: Notice: A non well formed numeric value encountered in index.php on line 11 我在这里遗漏了什么?您使用了错误的函数,strotime只返回自epoch以来的秒数,它不会格式化日期 试着做: $time = date

我需要将字符串转换为日期格式,但它返回了一个奇怪的错误。字符串如下所示:

21 nov 2012
我用过:

$time = strtotime('d M Y', $string);
PHP返回了错误:

Notice:  A non well formed numeric value encountered in index.php on line 11

我在这里遗漏了什么?

您使用了错误的函数,
strotime
只返回自epoch以来的秒数,它不会格式化日期

试着做:

$time = date('d M Y', strtotime($string));

您调用的函数完全错误。把它递给我

$time = strtotime('21 nov 2012')
第二个参数用于传递新时间相对于的时间戳。它默认为
time()


编辑:将返回unix时间戳。如果要格式化,请将新的时间戳传递给
日期
函数。

要将日期字符串转换为其他格式,请执行以下操作:

<?php echo date('d M Y', strtotime($string));?>

解析字符串,返回表示的UNIX时间戳。将UNIX时间戳(或当前系统时间,如果未提供时间戳)转换为指定格式。因此,要重新格式化日期字符串,需要将其传递给
strotime
,然后将返回的UNIX时间戳作为
date
函数的第二个参数传递。
date
的第一个参数是所需格式的模板


有关日期格式选项的详细信息。

有关更复杂的字符串,请使用:

$datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here);
$timestamp = $datetime->getTimestamp();

一开始,试图得到一个非常糟糕的FGITW答案,得-1分。Downvote保留,因为它没有回答问题。@NullUserException对此表示抱歉。我正在打字,它已经提交了……你的代码所做的只是将输入字符串作为
2012年11月21日
吐出,这并不是特别有用。OP似乎想要一种可以用于计算而不是表示的日期格式;示例:。这使您能够准确地设置所需的格式,从而避免了
strotime()
对美国mm dd样式日期的无意义解析——如果您仔细想想,这是一种非常愚蠢的格式。