1

我有以下纪元时间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);
4

3 回答 3

3

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

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;
}
于 2013-11-12T13:58:52.313 回答
0

如果您只是想要提前一天并且不受准确性或其他任何事情的困扰,那么最快的方法就是将 86400(以秒为单位的 1 天)添加到您拥有的时代。

于 2013-11-12T11:34:50.313 回答
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()您可以通过调用您的日期对象将其转换回毫秒。

小提琴

于 2013-11-12T11:45:31.470 回答