我有以下时间戳(示例) 20131024010907
我想转换为日期格式。我将从另一个时间戳中减去时间戳。例如:
20131024010907 - 20131024010856 =已过去11秒
问题是,如果我按原样减去时间戳,它将无法正常工作。 E.g。
var x = 20131024010907
var y = 20131024010856
x-y != 11
x-y = 51
如何将这些时间戳转换为javascript中的日期,以便我可以相互减去它们?这可能吗?
答案 0 :(得分:3)
通常意义上的那些看起来不像“时间戳”的值(自The Epoch [1970年1月1日格林尼治标准时间午夜以来的秒或毫秒]),它们看起来像打包的日期/时间字符串:
20131024010907 yyyyMMddHHmmss
如果是这样,您只需拆分字符串并使用new Date(year, month, day, hour, minute, second)
构造函数:
var x = parseDate("20131024010907");
var y = parseDate("20131024010856");
console.log("x - y = " + (x - y) + "ms"); // 11000ms = 11 seconds
function parseDate(str) {
return new Date(
parseInt(str.substring(0, 4), 10),
parseInt(str.substring(4, 6), 10) - 1, // Months start with 0
parseInt(str.substring(6, 8), 10),
parseInt(str.substring(8, 10), 10),
parseInt(str.substring(10, 12), 10),
parseInt(str.substring(12), 10)
);
}
答案 1 :(得分:1)
您应该将时间戳转换为几乎为ISO的日期,然后使用Date构造函数:(小提琴:http://jsfiddle.net/6d6hU/)
var ts = "20131024010907";
var isoTs = ts.substring(0,4) + "-" + ts.substring(4,6) + "-" + ts.substring(6,8) + " " + ts.substring(8,10) + ":" + ts.substring(10, 12) + ":" + ts.substring(12)
console.log(isoTs)
console.log(new Date(isoTs))
更简单的事情。使用moment.js解析日期,格式与您的时间戳匹配:http://momentjs.com/docs/#/parsing/string-format/