如何以本地时间格式显示Unix时间

时间:2013-01-31 02:06:08

标签: php javascript datetime timezone unix-timestamp

我有一个php变量说$expTime(有一个unixtime说 - 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我希望根据当地时区在所有客户端系统上显示它(同时确保节省日光)

2 个答案:

答案 0 :(得分:2)

DateTime使用timezones

$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');

See it in action

答案 1 :(得分:1)

UNIX时间值通常是自纪元以来的UTC秒。 Javascript time values自同一纪元以来是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