要为您的问题提供有效答案:
var ms = new Date() - Date.UTC(2013,0,1);
但请不要这样做。
您最终会混淆使用您系统的任何人(开发人员、api 客户端、数据库人员等)
你不会像你想象的那样节省多少字节。JavaScriptNumber
类型在内存中始终为 64 位(8 字节),请参见此处。你可能在数据库中保存多少取决于你的数据库平台,但例如 MySQLDATETIME
类型需要 8 个字节,而TIMESTAMP
类型只需要 4 个。a 的范围TIMESTAMP
要小得多,参考这里和这里。
如果您的应用使用您的纪元之前的日期,您可能会经常遇到负数。它们会起作用,但它们可能会造成混乱。如果有人不知道您调整的时代,他们可能会产生一个看起来有效的日期,但应该意味着不同的东西。
您还将放弃使用许多期望日期以某种方式工作的优秀库的任何潜力。您可以将自定义日期转换为标准日期,但您真的想要不断地包装和打开这些值吗?可能不是。即使是像moment.js这样使用自己的类型的库,也可以通过扩展或封装标准数据类型来做到这一点。兼容性比字节空间更受关注。
JavaScript 日期有很多问题,但选择 1/1/1970 作为纪元是件好事。仅仅因为您可以做某事,并不意味着您应该做某事。
此外,考虑到磁盘空间通常是运行应用程序成本最低的组件。即使有数百万条记录,您最多也可能节省几十兆字节。让我们在偏高的情况下犯错,并说您通过这个巧妙的技巧节省了 200 MB。Amazon 的顶级预置 IOPS 云存储为每月每 GB 0.125 美元。恭喜,您全年节省了 7.68 美元。