所以我想在php中获取今天的日期,时间和时区等。在stackoverflow的其他问题中,我最终得到了这个:echo date('D M d Y H:i:s O')
它返回:Tue May 15 2018 23:08:48 +0200
。
但是当我在JS中使用Date()
函数时,它会返回:Tue May 15 2018 23:12:55 GMT+0200 (Central Europe Daylight Time)
。
这就是问题如何在PHP中获得与JS相同的结果?我不知道,也许我可以将(Central Europe Daylight Time)
添加为文本,但这很奇怪。你能救我一下吗?
注意:默认时区是在PHP中设置的。就像那样:date_default_timezone_set("Europe/Prague");
这是添加文字版本:
$today = date('D M d Y H:i:s O')." (Central Europe Daylight Time)";
echo $today;
它返回Tue May 15 2018 23:25:09 +0200 (Central Europe Daylight Time)
这个。
答案 0 :(得分:1)
试试这个:
$today = date('D M d Y H:i:s O',strtotime("now"));
它将返回服务器的当前时间(正如您所说:欧洲/布拉格)。
永远不要依赖用户在JS中的时间(可以从用户更改为用户)。
答案 1 :(得分:0)
要解决在每种语言中存储相同的日期值...
您可以使用Unix UTC时间戳在JavaScript和PHP中创建日期。
在JavaScript中:
var timestamp = new Date().getTime();
var formattedDate = new Date(timestamp);
console.log(formattedDate);
在PHP中:
$timestamp = time();
$formattedDate = gmdate("D M d Y H:i:s O", $timestamp);
echo $formattedDate;
在上面的代码中,JavaScript timestamp
和PHP $timestamp
都表示为Unix UTC时间戳。您可以在两种语言之间自由且一致地传递这些值。
如果您以这种方式存储时间戳作为权威数据,那么您可以随时格式化输出日期,无论您想要什么,以及在任何时区。
我会从那里开始,以便您拥有一致的数据。
如果您对格式本身也感兴趣,那么这是一个单独的问题。
答案 2 :(得分:0)
要像js版本一样显示,请尝试
echo date('D M d Y H:i:s O') .' '. date_default_timezone_get();
OR
$dt = date_timezone_get(date_create(time()));
echo date('D M d Y H:i:s O') . $dt->getName();
这将打印出来
Tue May 15 2018 23:36:22 +0200 Europe / Berlin
答案 3 :(得分:0)
在您的php文件中,您可以将当前的unix时间戳直接写入javascript变量。这将为您提供一个稳定的起点(服务器端提供的javascript日期对象)来运行倒计时。
代码:
<?php
echo date('Y-m-d h:i:s', time()) , "<br>\n"; // purely for demonstration
?>
<script>
var unix = new Date(<?=time()*1000?>).toLocaleString("en-US", {timeZone: "Europe/Prague"}); // convert to milliseconds, not seconds; force timezone
document.write(unix);
</script>
输出:
2018-05-16 04:03:00 <-- (Unix timestamp)
5/16/2018, 6:03:00 AM <-- (American formatted Prague time)
生成的源代码:
2018-05-16 04:03:00<br>
<script>
var unix = new Date(1526443380000).toLocaleString("en-US", {timeZone: "Europe/Prague"}); // convert to milliseconds, not seconds; force timezone
document.write(unix);
</script>
进一步研究/理解的一些参考资料......
Convert a Unix timestamp to time in JavaScript
How to initialize javascript date to a particular timezone