我正在使用UTC字符串(130459385299470000)我需要将此转换为某些东西,例如2014年5月5日星期四15:17:00在Javascript中。
对此的任何帮助将不胜感激。
由于
RFD
答案 0 :(得分:5)
您必须与之抗衡:
Windows文件时间使用1601年1月1日的纪元.Java Date
使用1970年1月1日。您需要相应地调整该值。
Windows文件时间使用" ticks",每个为100纳秒。 JavaScript Date
使用毫秒。所以精确度会下降。
Windows文件时间
JavaScript Date
基于UTC,但会根据运行代码的计算机的本地时区呈现它的输出。这通常是最终用户的网络浏览器。您可以使用像moment.js这样的库将其呈现为UTC,如果这是您想要的行为。
由于所有JavaScript编号都是IEEE浮点数,因此当您开始使用较大的值时,可能会出现舍入错误。这可以通过截断字符串而不是分割来避免。
var s = "130459385299470000";
var t = +s.substring(0, s.length-4);
var e = Date.UTC(1601,0,1);
var dt = new Date(e + t);
当然,最好的办法是首先将它转换为C#代码中的ISO8601时间戳,而不是传递文件时间。
答案 1 :(得分:0)
将字符串转换为数字,数字从微秒到毫秒,并根据UTC时间创建JS Date对象:
var st = "130459385299470000";
var dt = new Date(parseInt(st, 10) / 1000);