有人可以识别这个日期时间格式吗?

时间:2017-07-29 21:47:51

标签: time date format

IMAP服务器正在向我发送如下所示的时间戳:

  

2016年4月12日星期二09:45:14 GMT-0500(CDT)

我已经在足够多的地方看到这种格式足以让我认为它是标准化的。但我不知道标准的名称是什么。

它非常类似于电子邮件的RFC 5322日期时间格式(我的第一个猜测,因为我正在使用IMAP服务器),但并不完全。

有人认出来吗?

编辑:根据MDN,显然这也是JavaScript Date.prototype.toString()的标准格式。我在不相关的环境(JS / IMAP)中多处看到这一事实让我觉得它必须是某种标准。仍然无法找到它的名字。

1 个答案:

答案 0 :(得分:2)

与大多数SO答案不同,这是对失败的承认。最初我以为这是C库函数asctime() - C在UNIX上投射了很长的阴影,因此也就是互联网。但正如OP指出的那样,这将产生Tue Apr 12 09:45:14 2016而不是Tue Apr 12 2016 09:45:14 GMT-0500 (CDT)形式的东西。我应该停止看这一点,但好奇心推动了我。

经过大量拖网,我认为格式不是标准,而是asctime和RFC 822及其后代的混蛋。

  • asctime(和堂兄弟,例如ctimestrftime)会获得Tue Apr 12 09:45:14 2016,所以这一年是错误的'地方,没有偏移或区域。我怀疑后一点是环境的,受LC_TIME的影响。 GNU日期的源代码似乎同意。See GNU date in the coreutils pkg source
  • RFC 822的时间戳格式会生成Tues, 06 Apr 16 09:45:14 CDT。 RFC 2822的努力将是Tues, 06 Apr 2016 09:45:14 -0500,修复Y2K问题,并在偏离普遍时间时更加清晰。 RFC 5322是一样的。并且(aargh)在一周之后引入一个逗号。 See RFC 822, etc.
  • RFC 1123虽然显然不是官方标准,但持续时间足够长,以至于Java已将其作为标准格式。这会让您Tue, 06 Apr 2016 09:45:14 GMT使用RFC1123 formatter
  • 之类的内容

在这一点上,我意识到浪费这么多时间学习时间的讽刺意味,而且在我开始计算机编程的那段时间之前知道的双重讽刺是{{3}之一}和notoriously mis-understood区域,我应该知道最好不要被吸进去。让这一切成为你们所有人的教训。逃离,我的朋友,逃跑!