1

我有一个 php 变量 say $expTime(它有一个 unixtime say-1359683953) 。我想在客户端显示这个变量(根据他的当地时间以适当的时间格式)。我对 UTC 、 GMT 、 DST 所有这些东西感到很困惑。任何人都可以建议使用 php 或 javascript 解决此问题。

当我使用echo date('h:i M d/y',$expTime)它时,它向我显示了错误的时间。

我如何将时间保存到数据库:
var exp_day= parseInt($("#exp_day").val());
var exp_hrs= parseInt($("#exp_hrs").val());
var exp_min= parseInt($("#exp_min").val());
var exp_time = (exp_day*24*60*60) + (exp_hrs*60*60) + (exp_min*60) ;
然后我使用 ajax 将 exp_time 发布到 php 文件中 -
$expTime = time() + $_POST["exp_time"];

我从数据库中检索的是 $expTime 。这个 $expTime 我想根据当地时区在所有客户端系统上显示它(也通过确保夏令时)

4

2 回答 2

2

DateTime时区一起使用:

$datetime = new DateTime('@1359683953');
echo $datetime->format('h:i M d/y') . "<br>";
$datetime->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $datetime->format('h:i M d/y');

看到它在行动

于 2013-01-31T02:08:17.813 回答
1

UNIX 时间值通常是自纪元以来的 UTC 秒数。Javascript时间值是自同一纪元以来的 UTC 毫秒。ECMA-262 Date.prototype.toString方法自动生成一个表示本地时间的字符串,并在适用时考虑夏令时。

您还可以使用Date方法创建自己的格式化字符串,它们还返回本地时间和日期值。如果您想在 UTC 中工作,也有 UTC 方法。

要在客户端上执行此操作,只需从服务器提供一个 UTC 时间值,然后您在 javascript 中需要的只是:

var timeValue = 1359683953;  // assume seconds
var date = new Date(timeValue * 1000);  // convert time value to milliseconds

alert(date); //  Fri 01 Feb 2013 11:59:13 GMT+1000 
于 2013-01-31T02:20:07.707 回答