我正在解析一个名为UTCTime的字段并包含值1311346453064的XML文件。它还附带一个名为UTC的字段,其中包含值2011-07-22T10:54:13.064-04:00这是一个完整的.Net DateTimeOffset我相信。我无法弄清楚的第一个领域。是什么以这种方式生成日期?它太大而不能成为unix时间戳,因为它增加了大约41百万到1970年1月1日。任何帮助识别它或如何将其转换为日期时间而不使用第二个字段将是一个很大的帮助!感谢。
答案 0 :(得分:4)
它相当于unix时间戳[即自1970年以来的直接计数]但是以毫秒而不是秒为单位。
$ date -d @1311346453
Fri Jul 22 10:54:13 EDT 2011
以3064
结尾让我觉得很明显。
因此,要在.NET中进行转换,您将使用
static readonly DateTime epoch = new DateTime(1970,1,1,0,0,0,
DateTimeKind.Utc);
long value = 1311346453064L;
var ts = new TimeSpan(value*TimeSpan.TicksPerMillisecond);
var dt = epoch + ts;
或者,以某种可读性为代价略微提高效率
const long epochTicks = 621355968000000000L;
var dt = new TimeSpan(value*TimeSpan.TicksPerMillisecond+epochTicks,
DateTimeKind.Utc);
请注意,这会丢弃其他字段中的时区信息(-04:00
的偏移量)。
答案 1 :(得分:1)
Javascript示例:
D:\ :: more > date.js
WScript.Echo( new Date().getTime() );
^Z
D:\ :: cscript date.js
1311975458665
这是自1970年1月1日以来的毫秒数。