这个 UTC 时间格式是什么?

发布于 2024-11-27 07:32:42 字数 261 浏览 0 评论 0原文

我正在解析一个 XML 文件,该文件有一个名为 UTCTime 的字段,包含值 1311346453064。它还附带一个名为 UTC 的字段,其中包含值 2011-07-22T10:54:13.064-04:00,这是一个完整的 .Net DateTimeOffset我相信。第一个字段我无法弄清楚。是什么以这种方式生成日期?它对于 Unix 时间戳来说太大了,因为它在 1/1/1970 基础上增加了大约 41 千年。任何识别它或如何在不使用第二个字段的情况下将其转换为日期时间的帮助都会有很大帮助!谢谢。

I am parsing an XML file that has a field called UTCTime and contains the value 1311346453064. It also comes with a field called UTC that contains the value 2011-07-22T10:54:13.064-04:00 which is a complete .Net DateTimeOffset I believe. The first field I can't figure out though. What generates a date in that way? It's too large to be a unix timestamp since it adds about 41 millenia to 1/1/1970. Any help in identifying it or how I can convert it to a datetime without using that second field would be a great help! Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忘年祭陌 2024-12-04 07:32:42

它相当于 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;

Or,稍微更高效,但会牺牲一些可读性。

const long epochTicks = 621355968000000000L;
var dt = new TimeSpan(value*TimeSpan.TicksPerMillisecond+epochTicks,
                      DateTimeKind.Utc);

请注意,这会丢弃其他字段中的时区信息(-04:00 的偏移量)。

It is equivalent to the unix timestamp [i.e. a straight count since 1970] but in milliseconds instead of seconds.

$ date -d @1311346453
Fri Jul 22 10:54:13 EDT 2011

Ending with 3064 made it obvious to me.

So, to convert in .NET you would use

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;

Or, slightly more efficiently at a cost of some readability

const long epochTicks = 621355968000000000L;
var dt = new TimeSpan(value*TimeSpan.TicksPerMillisecond+epochTicks,
                      DateTimeKind.Utc);

Note that this discards the timezone information (the offset of -04:00) in the other field.

溺渁∝ 2024-12-04 07:32:42

JavaScript 示例:

D:\ :: more > date.js
WScript.Echo( new Date().getTime() );
^Z

D:\ :: cscript date.js
1311975458665

这是自 1970 年 1 月 1 日以来的毫秒数。

Javascript example:

D:\ :: more > date.js
WScript.Echo( new Date().getTime() );
^Z

D:\ :: cscript date.js
1311975458665

This is the number of milliseconds since 01.01.1970.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文