我在javascript中选择了一些日期和时间,然后想将它存储在服务器(.NET)上.日期应该是从当前时刻开始的(因此它们不会在1970年之前).在这里阅读了有关SO的主题后,我了解到最好将日期存储为字符串,人们建议使用Date.prototype.toISOString()或Date.prototype.toUTCString().我读过toISOString()IE 7中没有的内容.我想知道其他的差异,我应该选择一个或另一个功能.
谢谢!
Pin*_*nal 32
两者都不同.ISO是标准格式时间.UTC是世界规定时钟和时间的主要时间标准.ISO也支持ms其格式.
因此,如果要将数据发送到服务器,请发送ISO,因为ISO是标准格式:
var date = new Date();
sendDate(date.toISOString());
Run Code Online (Sandbox Code Playgroud)
您也可以toISOString在IE7 polyfill中使用.
Gov*_*har 24
我希望它对你有所帮助.
摘要关于toISOString(): -
该toISOString()方法返回ISO格式的字符串(ISO 8601扩展格式),可以描述如下:YYYY-MM-DDTHH:mm:ss.sssZ.时区始终为UTC,后缀为"Z".
有关详细信息,请参阅下面的链接toISOString().
摘要关于toUTCString(): -
该toUTCString()方法使用UTC时区将日期转换为字符串.
有关详细信息,请参阅下面的链接 toUTCString()
Eur*_*eka 14
它们提供几乎相同的信息,但格式不同。这是我在我的机器上得到的。
new Date().toISOString()
"2019-10-11T18:56:08.984Z"
new Date().toUTCString()
"Fri, 11 Oct 2019 18:56:08 GMT"
Run Code Online (Sandbox Code Playgroud)
有 4 个原因.toISOString()比.toUTCString().
当您按字母顺序排序时,“2019-10-11T18:56:08.984Z”模式.toISOString()为您提供正确的日期顺序。
.toISOString()提供毫秒值,而.toUTCString()没有。
.toUTCString()人类最终用户可能更熟悉该值,但前提是语言设置适合他们。相反,.toISOString()无论语言设置如何,都是相同的。
您可以轻松地将 ISO 日期字符串转换为 Javascript 日期对象,然后再返回,重新生成完全相同的字符串。这与谁给了您 ISO 日期字符串、服务器在哪里以及您在哪里无关。
对于 UTC 字符串,这不会自动成立。例如,如果您的应用系统的第二个实例在不同的时区或语言中运行,则它.toUTCstring()可能会使用不同的数字或单词(分别)来表示同一时刻。它很难创建一个与应用程序的第一个实例生成的内容相匹配的 UTCString,因为通常它不知道生成第一个 UTC 字符串的语言或时区。
那么也许是为了制作一些很好的东西,可以在外部显示供用户查看?嗯,不是真的。任何不在伦敦时区的人都不会觉得它很有帮助。
我住在伦敦。甚至我,即使我正在编写一个纯粹供我使用的应用程序,仅在我的系统上,仅在我的家中,仍然不想使用.toUTCString(). 因为它显示的是UTC(也称为GMT)。伦敦并不总是在格林威治标准时间。在夏季,我们将移至 GMT+1,因此.toUTCString()结果会误导任何没有注意到“GMT”并在脑海中进行时间调整的人。
如果我想要一个自然语言时间,为了让不懂计算机的用户感到舒适,我会从部分手动构建它,使用像moment.js. 如果我想要一个快速而肮脏的解决方案,我会使用.toString()它至少会在适当的时候移到夏令时。