从格林威治标准时间到2013年1月1日格林威治标准时间格林尼

时间:2013-05-14 19:34:16

标签: javascript node.js date

我试图将时间存储为2013年1月1日和我将其保存在数据库中的时间之间的差异。它绝对小于制作它相对于1970年的标准;)在存储方面,因为我发送它客户端。

由于我要做很多的getRelativeTime(),我正在寻找简单。我可能会将它从2013年1月1日更改为服务器启动日期,即2013年的第1个月:D

我在GMT中保留客户端和服务器端跟踪,并且它位于nodejs服务器上,服务器未知。根据我的研究,有一些解决方案,但许多人称之为错误,因为这个和那个:|

2 个答案:

答案 0 :(得分:2)

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

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

但是请这样做。

  • 您最终会混淆使用您系统的任何人(开发人员,API客户端,数据库人员等)

  • 你不会像你想象的那样以字节数保存。 JavaScript Number类型在内存中始终为64位(8字节),see here。您在数据库中保存的数量非常依赖于您的数据库平台,但是例如,MySQL DATETIME类型需要8个字节,而TIMESTAMP类型只需要4个。{{{{ 1}}要小得多,引用herehere

  • 如果您的应用适用于您的纪元之前的日期,您可能会经常遇到负数。他们会工作,但他们可能是混乱的来源。如果某人不知道您调整的时代,他们可以生成一个看起来有效的日期,但这应该意味着不同的日期。

  • 您也将失去使用许多期望日期以某种方式工作的优秀图书馆的潜力。您可以将自定义日期转换为标准日期,但是您是否真的希望不断包装和展开这些值?可能不是。即使是像moment.js这样使用自己类型的库,也可以通过扩展或封装标准数据类型来实现。兼容性比字节空间要高得多。

JavaScript日期有很多问题,但是作为一个时代的1/1/1970的选择是的事情。仅仅因为可以做某事,并不意味着你应该

此外,请考虑磁盘空间通常是运行应用程序的最便宜的组件。即使拥有数百万条记录,您最多也可以节省几十兆字节。让我们只是错误偏高,并说你用这个聪明的黑客节省200 MB。亚马逊的顶级配置IOPS云存储每月每GB 0.125美元。恭喜你,全年都节省了7.68美元。

答案 1 :(得分:0)

您是否正在尝试规范化纪元时间的价值?这样的纪元时间以正整数值给出。不是吗? 1356998400是您要标准化的数据量。