Javascript 获取当前GMT和2013年1月1日GMT之间的GMT时差

Javascript 获取当前GMT和2013年1月1日GMT之间的GMT时差,javascript,node.js,date,Javascript,Node.js,Date,我试图将时间存储为2013年1月1日和我将其保存在数据库中的时间之间的差值。它肯定比1970年的标准要小;)既在存储中,又因为我将它发送到客户端 由于我将大量使用getRelativeTime(),因此我希望简单。我可能会将其从2013年1月1日更改为服务器启动日期,即2013年1月1日:D 我在GMT中跟踪客户端和服务器端,它位于nodejs服务器上,服务器未知。根据我的研究,有一些解决方案,但许多人认为它们是不正确的,因为这样或那样:|你试图规范化大纪元时间的值?以正整数值表示的历元时间。不

我试图将时间存储为2013年1月1日和我将其保存在数据库中的时间之间的差值。它肯定比1970年的标准要小;)既在存储中,又因为我将它发送到客户端

由于我将大量使用getRelativeTime(),因此我希望简单。我可能会将其从2013年1月1日更改为服务器启动日期,即2013年1月1日:D


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

你试图规范化大纪元时间的值?以正整数值表示的历元时间。不是吗?1356998400是您要标准化的数据量。

要为您的问题提供有效答案:

var ms = new Date() - Date.UTC(2013,0,1);
但请不要这样做。

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

  • 在字节方面,您不会像您想象的那样节省太多。JavaScript
    Number
    类型在内存中始终为64位(8字节)。您可以在数据库中保存多少取决于您的数据库平台,但例如,MySQL
    DATETIME
    类型需要8个字节,而
    TIMESTAMP
    类型只需要4个字节。
    时间戳
    的范围要小得多,参考和

  • 如果你的应用程序使用的日期早于你的纪元,你可能会经常遇到负数。它们会起作用,但可能会引起混乱。如果有人不知道你调整后的日期,他们可能会给出一个看起来有效的日期,但应该有不同的含义

  • 您还将排除使用许多希望日期以某种方式工作的大型库的任何可能性。您可以将自定义日期转换为标准日期,也可以将自定义日期转换为标准日期,但您真的希望不断地包装和打开这些值吗?可能不会。即使这样的库也使用它们自己的类型,方法是扩展或封装标准数据类型。兼容性比字节空间更重要

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


也可以认为,磁盘空间通常是运行应用程序最不昂贵的组件。即使有数百万条记录,您最多也可能保存几十兆字节。让我们把错误放在较高的位置,并说这个聪明的黑客程序节省了200MB。亚马逊的顶级配置IOPS云存储每月每GB 0.125美元。恭喜您,您全年节省了7.68美元。

无论时区如何,时差都是一样的。1。客户看不到这一点,它只是内部的。2.数以百万计的数据库条目。。。3.那么如果有负数呢?4.如果我需要使用上述库,我可以使用常规日期。可能会有开发人员在你离开后出现。企业可能会决定与第三方进行整合。你永远无法确定未来会带来什么。2.字段的字节大小更多地与精度和范围有关,而与历元的位置关系不大。如果要节省数据库空间,请使用精度较小的日期类型。(你没有提到你正在使用什么数据库。)此外,现在磁盘空间非常便宜。@Discipol你如何将你的值存储到数据库中,从而节省大量的存储空间?3&4-你或你的追随者可能会忘记并浪费宝贵的时间试图弄清楚这一点。一般来说-代码是为了兼容性,而不是晦涩难懂。