Strtotime与欧洲日期格式

Roc*_*och 2 php string time

我正在尝试使用strtotime来转换以下日期:

07/09/2009 17:01:27

这是9月7日的欧洲/伦敦时区格式

该功能正在颠倒月份和日期,是否有解决方法?谢谢

小智 19

改变/-,好像PHP得到/作为美国的格式,和-欧洲.你可以在这里看到:

$date = "06/10/2011 14:28"; // 6 october 2011 2:28 pm
$otherDate = "06-10-2011 14:28"; // 6 october 2011 2:28 pm

echo $stamp = strtotime($date) . "<br />"; // outputs 1307708880
echo $otherStamp = strtotime($otherDate) . "<br />"; // outputs 1317904080

echo date("d-m", $stamp); // outputs 10-06
echo date("d-m", $otherStamp); // outputs 06-10
Run Code Online (Sandbox Code Playgroud)

http://www.php.net/manual/es/function.strtotime.php#106043


Joh*_*ter 5

如果您不在Windows上,则可以使用strptime,并明确设置格式.正如OIS指出的那样,strptime在Windows上不可用.

要将拆分年/月/日等值转换为unix时间戳,您可以将它们传递给mktime.略显繁琐,但它的确有效.

您可能想要这样做的一个原因是使用不同的格式打印它date.

来自strptime php.net页面:

示例#1 strptime()示例

<?php
  $format = '%d/%m/%Y %H:%M:%S';
  $strf = strftime($format);

  echo "$strf\n";

  print_r(strptime($strf, $format));
?>
Run Code Online (Sandbox Code Playgroud)

上面的例子将输出类似于:

03/10/2004 15:54:19

Array
(
    [tm_sec] => 19
    [tm_min] => 54
    [tm_hour] => 15
    [tm_mday] => 3
    [tm_mon] => 9
    [tm_year] => 104
    [tm_wday] => 0
    [tm_yday] => 276
    [unparsed] =>
)
Run Code Online (Sandbox Code Playgroud)


Joh*_*nde 5

DateTime可以轻松处理:

$datetime = new DateTime('07/09/2009 17:01:27', new DateTimeZone('Europe/London'));
echo $datetime->format('d/m/Y H:i:s');
Run Code Online (Sandbox Code Playgroud)

看到它在行动