4

我需要将字符串转换为日期格式,但它返回一个奇怪的错误。字符串是这样的:

21 nov 2012

我用了:

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

PHP 返回错误:

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

我在这里想念什么?

4

4 回答 4

8

你调用的函数完全错误。就通过吧

$time = strtotime('21 nov 2012')

第二个参数用于传入与新时间相关的时间戳。它默认为time().

编辑:这将返回一个 unix 时间戳。如果要对其进行格式化,请将新时间戳传递给date函数。

于 2012-11-30T18:00:49.890 回答
2

要将日期字符串转换为不同的格式:

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

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

单击此处了解有关日期格式选项的更多详细信息。

于 2012-11-30T19:19:55.677 回答
1

您使用了错误的函数,strtotime仅返回自纪元以来的秒数,它不格式化日期。

尝试做:

$time = date('d M Y', strtotime($string));
于 2012-11-30T18:00:09.997 回答
1

对于更复杂的字符串,请使用:

$datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here);
$timestamp = $datetime->getTimestamp();
于 2016-05-24T14:43:37.733 回答