我有以下纪元时间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);
答案 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()
将其转换回毫秒。