【发布时间】:2014-08-07 23:27:21
【问题描述】:
我想用时区偏移将日期形式从 d/m/Y 转换为 Y-m-d。 我可以使用以下代码从 d/m/Y 转换为 Y-m-d:
$date = DateTime::createFromFormat('d/m/Y', $date);
$date = $date->format('Y-m-d');
但我不确定如何添加时区偏移量。
【问题讨论】:
标签: php datetime timezone timezone-offset
我想用时区偏移将日期形式从 d/m/Y 转换为 Y-m-d。 我可以使用以下代码从 d/m/Y 转换为 Y-m-d:
$date = DateTime::createFromFormat('d/m/Y', $date);
$date = $date->format('Y-m-d');
但我不确定如何添加时区偏移量。
【问题讨论】:
标签: php datetime timezone timezone-offset
(PHP 5 >= 5.3.0) 你居然输入了第三个参数
public static DateTime DateTime::createFromFormat(string $format , 字符串 $time[, DateTimeZone $timezone])
$date = DateTime::createFromFormat('d/m/Y', $date, new DateTimeZone('Europe/Berlin'));
【讨论】:
DateTimeZone Object)被忽略了。实现这一目标的唯一方法是使用@John Conde 发布的经过验证的答案,我正在运行 PHP 5.6.30
$date = DateTime::createFromFormat('d/m/Y', $date);
$date->setTimeZone(new DateTimeZone('America/New_York'));
$date = $date->format('Y-m-d');
【讨论】:
+2:00代替America/New_York吗?我知道你应该使用时区而不是偏移量,因为夏令时等。但在这种环境下,America/New_York 这样的时区不起作用。
America/New_York是用户的时区吗?
$date,然后在调用setTimeZone() 时,它会将其转换为“America/New_York”。换句话说,它引入了一个时间组件——$date 不再是午夜。对某些人来说可能没什么大不了的,但对我来说是!