获取现在GMT和2013年1月1日GMT之间的GMT时差

Get GMT time difference between now GMT and 1 January 2013 gmt

本文关键字:GMT 之间 1日 时差 1月 2013年 获取      更新时间:2023-09-26

我试图将时间存储为2013年1月1日与我将其保存在数据库上的时刻之间的差异。它肯定比相对于1970年的标准要小;),无论是在存储中,还是因为我将它发送到客户端。

因为我要做一个getRelativeTime()相当多,我正在寻找简单。我可能会把它从2013年1月1日改为服务器启动日期,即2013年一个月的第一天:D

我在GMT保持客户端和服务器端跟踪,它是在nodejs服务器上,服务器是未知的。根据我的研究,有一些解决方案,但许多人认为它们是不正确的,因为这个和那个:|

为你的问题提供一个有效的答案:

var ms = new Date() - Date.UTC(2013,0,1);

但请

  • 你最终会让任何使用你的系统的人(开发人员,api客户端,数据库人员等)感到困惑

  • 您将不会像您想象的那样节省那么多字节。JavaScript Number类型在内存中总是64位(8字节),见这里。在数据库中可以节省多少数据取决于您的数据库平台,但例如,MySQL DATETIME类型占用8个字节,而TIMESTAMP类型仅占用4个字节。TIMESTAMP的范围要小得多,参考这里和这里。

  • 如果你的应用程序使用纪元之前的日期,你可能会经常遇到负数。它们会起作用,但它们可能会造成混乱。如果有人不知道你调整的纪元,他们可能会产生一个日期看起来有效,但应该意味着不同的东西。

  • 您还将放弃使用许多期望日期以某种方式工作的伟大库的任何潜力。您可以将自定义日期转换为标准日期或从标准日期转换为自定义日期,但是您真的希望不断地包装和展开这些值吗?可能不会。即使像moment.js这样使用自己的类型的库,也是通过扩展或封装标准数据类型来实现的。兼容性比字节空间更重要。

JavaScript日期有很多错误,但是选择1970年1月1日作为纪元是一个好的的事情。仅仅因为你可以做某事,并不意味着你应该

另外,考虑到磁盘空间通常是运行应用程序最便宜的组件。即使有数百万条记录,您最多也可能节省几十兆字节。让我们假设你用这种聪明的方法节省了200 MB。亚马逊提供的顶级IOPS云存储是每GB每月0.125美元。恭喜你,你一年来已经省下了7.68美元。

您正在尝试规范化历元时间的值?Epoch时间本身给出正整数值。不是吗?1356998400是要规范化的数据量