如何在javascript或jquery中将纪元时间转换为本地时间?

时间:2013-11-12 11:22:34

标签: javascript

我有以下纪元时间1374188400000000,即:

GMT: Thu, 18 Jul 2013 23:00:00 GMT
local time zone: 7/19/2013 12:00:00 AM GMT+1

如何更新纪元以使其包含本地日期时间(提前1天)而非原始日期时间?

我尝试了以下但不起作用:

var utcSeconds = 1374188400000000;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);

3 个答案:

答案 0 :(得分:2)

我通过将纪元日期时间转换为日期对象来修复此问题,这样就会自动计算时差,然后使用自定义函数格式化日期。

dashboards.formatDate = function (ticks) {

    var date = new Date(ticks);

    var months = new Array("Jan", "Feb", "Mar",
    "Apr", "May", "Jun", "Jul", "Aug", "Sep",
    "Oct", "Nov", "Dec");

    var day = date.getDate();
    var month = date.getMonth();
    var year = date.getFullYear();

    return day + " " + months[month] + ", " + year;
}

答案 1 :(得分:0)

如果您只想提前一天并且不会被准确性或其他任何事情困扰,那么最快捷的方法就是将86400(1天秒)添加到您拥有的纪元。

答案 2 :(得分:0)

不确定这是实现它的最简单方法,但似乎有效。

使用您的纪元,您可以创建一个日期对象,但由于您的数字太长,您需要修剪右边的3个数字。

var epoch = 1374188400000000;
var epoch2 = parseInt((""+epoch).substring(0,13), 10);
var dt = new Date(epoch2);
dt.setDate(dt.getDate()+1);
alert(dt); //Sat Jul 20 2013 00:00:00 GMT+0100 (GMT Daylight Time) 
alert(dt.valueOf()); //1374274800000

从我的原始号码转换为字符串,修剪为13个字符,创建一个新的日期对象并致电setDate()以将日期添加1天。您可以通过在日期对象上调用.valueOf()将其转换回毫秒。

Fiddle