转换为C#和#x27;s FileTimeUTC编号到Javascript中的日期
我正在使用UTC字符串(13045938529947000),我需要将其转换为Javascript格式的东西,如2014年5月5日星期四15:17:00 对此,任何帮助都将不胜感激 谢谢转换为C#和#x27;s FileTimeUTC编号到Javascript中的日期,javascript,date,date-conversion,Javascript,Date,Date Conversion,我正在使用UTC字符串(13045938529947000),我需要将其转换为Javascript格式的东西,如2014年5月5日星期四15:17:00 对此,任何帮助都将不胜感激 谢谢 RFD将字符串转换为数字,数字从微秒到毫秒,并基于UTC时间创建JS日期对象: var st = "130459385299470000"; var dt = new Date(parseInt(st, 10) / 1000); 将字符串转换为数字,从微秒到毫秒,并基于UTC时间创建JS日期对象: var s
RFD将字符串转换为数字,数字从微秒到毫秒,并基于UTC时间创建JS日期对象:
var st = "130459385299470000";
var dt = new Date(parseInt(st, 10) / 1000);
将字符串转换为数字,从微秒到毫秒,并基于UTC时间创建JS日期对象:
var st = "130459385299470000";
var dt = new Date(parseInt(st, 10) / 1000);
您将不得不面对一些差异:
- Windows文件时间使用1601年1月1日的纪元。JavaScript
使用1970年1月1日。您需要相应地调整该值Date
- Windows文件时间使用“刻度”,每个刻度为100纳秒。JavaScript
使用毫秒。因此,存在精度损失Date
- Windows文件时间可能不代表UTC。它可能表示某个本地时区中的时间。您必须了解源上下文,才能知道该值是否实际为UTC。如果不是,那么你必须调整它
- JavaScript
基于UTC,但会根据运行代码的机器的本地时区呈现其输出。这通常是最终用户的web浏览器。如果需要,可以使用类似于将其渲染为UTC的库Date
- 由于所有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时间戳,而不是传递文件时间。有一些差异需要解决:
- Windows文件时间使用1601年1月1日的纪元。JavaScript
使用1970年1月1日。您需要相应地调整该值Date
- Windows文件时间使用“刻度”,每个刻度为100纳秒。JavaScript
使用毫秒。因此,存在精度损失Date
- Windows文件时间可能不代表UTC。它可能表示某个本地时区中的时间。您必须了解源上下文,才能知道该值是否实际为UTC。如果不是,那么你必须调整它
- JavaScript
基于UTC,但会根据运行代码的机器的本地时区呈现其输出。这通常是最终用户的web浏览器。如果需要,可以使用类似于将其渲染为UTC的库Date
- 由于所有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时间戳,而不是传递文件时间。您尝试做什么?除非你展示你的作品,否则我们无法修复任何东西。你试图做什么?除非你展示你的作品,否则我们无法修复任何东西。