0

我在 PHP 中有一个日期字符串,例如 $min_date = "2012-03-30"

如果我通过 javascript Date.UTC函数运行这个日期,我得到 1333065600000。这就是我想要的值。

var split_date = min_date.split('-');
Date.UTC(split_date[0],(parseInt(split_date[1])-1),split_date[2]); //gives 1333065600000

我无法在 PHP 中获得这个值。

strtotime($min_date); //gives 1333045800

mktime(23,60,60,intval($split_date[1]),intval($split_date[2]),intval($split_date[0])); //gives 1333132260

如何从 PHP 中获取我在 javascript 中获得的值?我宁愿在服务器端进行此转换并将其发送到客户端,因为这些日期以大数组形式出现,在客户端转换时会很痛苦。

PS:我的服务器时间设置正确。

4

4 回答 4

3

由于时区差异,您无法在 PHP 中获得正确的时间戳。将时区设置为 UTC,您将获得与 javascript 相同的输出:

# globally
date_default_timezone_set('UTC');
echo strtotime('2012-03-30') . "\n";

# or like @Jim said, only for single operation :
echo strtotime('2012-03-30 UTC') . "\n";

更好的解决方案是使用 DateTime 类:

$dt = new DateTime($date, new DateTimeZone('UTC'));
echo $dt->getTimestamp() . "\n";
于 2013-09-20T12:33:34.680 回答
0

正如 Glavic 提到的,这是由于您的时区不是 UTC。

全局更改时区设置的另一种方法是简单地将 UTC 传递给 strtotime:

strtotime($min_date. " UTC"); 
于 2013-09-20T12:35:39.590 回答
0

这是因为您的时区设置不正确。您需要将时区设置为 UTC。然后,您可以使用DateTime类并获取所需的时间戳,如下所示:

$date = new DateTime('30-03-2012', new DateTimeZone('UTC'));
$ts = $date->getTimestamp()*1000;
echo $ts;

输出:

1333065600000

演示!

于 2013-09-20T12:40:05.077 回答
0
<script>
  var serverTime = new Date("<?php echo date('M d, Y H:i:s') ?>");
</script>
于 2013-09-20T12:28:33.293 回答