我试图将时间存储为2013年1月1日和我将其保存在数据库中的时间之间的差异。它绝对小于制作它相对于1970年的标准;)在存储方面,因为我发送它客户端。
由于我要做很多的getRelativeTime(),我正在寻找简单。我可能会将它从2013年1月1日更改为服务器启动日期,即2013年的第1个月:D
我在GMT中保留客户端和服务器端跟踪,并且它位于nodejs服务器上,服务器未知。根据我的研究,有一些解决方案,但许多人称之为错误,因为这个和那个:|
答案 0 :(得分:2)
为您的问题提供有效答案:
var ms = new Date() - Date.UTC(2013,0,1);
但是请不这样做。
您最终会混淆使用您系统的任何人(开发人员,API客户端,数据库人员等)
你不会像你想象的那样以字节数保存。 JavaScript Number
类型在内存中始终为64位(8字节),see here。您在数据库中保存的数量非常依赖于您的数据库平台,但是例如,MySQL DATETIME
类型需要8个字节,而TIMESTAMP
类型只需要4个。{{{{ 1}}要小得多,引用here和here。
如果您的应用适用于您的纪元之前的日期,您可能会经常遇到负数。他们会工作,但他们可能是混乱的来源。如果某人不知道您调整的时代,他们可以生成一个看起来有效的日期,但这应该意味着不同的日期。
您也将失去使用许多期望日期以某种方式工作的优秀图书馆的潜力。您可以将自定义日期转换为标准日期,但是您是否真的希望不断包装和展开这些值?可能不是。即使是像moment.js这样使用自己类型的库,也可以通过扩展或封装标准数据类型来实现。兼容性比字节空间要高得多。
JavaScript日期有很多问题,但是作为一个时代的1/1/1970的选择是好的事情。仅仅因为可以做某事,并不意味着你应该。
此外,请考虑磁盘空间通常是运行应用程序的最便宜的组件。即使拥有数百万条记录,您最多也可以节省几十兆字节。让我们只是错误偏高,并说你用这个聪明的黑客节省200 MB。亚马逊的顶级配置IOPS云存储每月每GB 0.125美元。恭喜你,全年都节省了7.68美元。
答案 1 :(得分:0)
您是否正在尝试规范化纪元时间的价值?这样的纪元时间以正整数值给出。不是吗? 1356998400是您要标准化的数据量。