【发布时间】:2012-02-28 11:48:20
【问题描述】:
我有一个这样的日期:2. 2012 年 2 月
我想把它转换成2012-02-02,所以我写了这段代码:
$date = '2. Februar 2012';
$date = date('Y-m-d', $date);
$date 变量要么是空的,要么是之后的 1970-01-01,有什么问题或缺失?
注意:日期是德语格式,所以不是二月,而是二月。我通过这种方式从日期选择器中获取日期。
谢谢!
【问题讨论】:
我有一个这样的日期:2. 2012 年 2 月
我想把它转换成2012-02-02,所以我写了这段代码:
$date = '2. Februar 2012';
$date = date('Y-m-d', $date);
$date 变量要么是空的,要么是之后的 1970-01-01,有什么问题或缺失?
注意:日期是德语格式,所以不是二月,而是二月。我通过这种方式从日期选择器中获取日期。
谢谢!
【问题讨论】:
这样使用:
$date = '2. February 2012';
$date = strtotime($date);
$date = date('Y-m-d', $date);
echo $date;
【讨论】:
您可以使用 *strtotime 并且还需要在 strtotime 函数中传递有效的日期格式,因为您的 $date 变量没有有效的格式。
您有 . 和拼写错误的月份名称。你必须在传递strtotime 之前清除那些。我为此使用了str_replace。
$date = '2. Februar 2012';
$date = date('Y-m-d', strtotime(str_replace('Februar','february',str_replace('.','', $date))));
【讨论】:
february 或有效的日期格式。你可以在这里看到php.net/manual/en/datetime.formats.date.php
date() php 中的函数需要第一个参数为字符串。在你的例子中没问题。 Seconds 参数是可选的,它应该是整数,带有您要转换的时间戳。
【讨论】:
使用strtotime
putenv('LC_ALL=de_DE');
putenv('LANG=de');
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
$date = '2. Februar 2012';
$date = date('Y-m-d', strtotime($date));
【讨论】:
使用strtotime()。
strtotime("2 February 2012") will return the unix timestamps.
mktime(0, 0, 0, 2, 2, 2012) will return the same unix timestamps.
如果你能跑
$ts = mktime(0, 0, 0, 2, 2, 2012);
echo date("Y-m-d H:i:s", $ts); // output 2012-02-02 00:00:00
You can run the following too
$ts = strtotime("2 February 2012");
echo date("Y-m-d H:i:s", $ts); // output 2012-02-02 00:00:00
【讨论】: