質問に対する有効な回答を提供するには:
var ms = new Date() - Date.UTC(2013,0,1);
しかし、これをしないでください。
システムを使用する人 (開発者、API クライアント、データベース関係者など) を混乱させることになります。
思ったほどバイト数を節約できません。JavaScriptNumber
の型は常にメモリ内で 64 ビット (8 バイト)です。こちらを参照してください。データベースでどれだけ節約できるかは、データベース プラットフォームに大きく依存しますが、たとえば、MySQLDATETIME
タイプは 8 バイトしか必要としませんが、タイプTIMESTAMP
は 4 バイトしか必要としませTIMESTAMP
ん。
アプリがエポックより前の日付で動作する場合、負の数が頻繁に発生する可能性があります。それらは機能しますが、混乱の原因になる可能性があります。誰かがあなたの調整されたエポックを認識していない場合、有効に見える日付を生成する可能性がありますが、別のことを意味するはずです。
また、日付が特定の方法で機能することを期待する多くの優れたライブラリを使用する可能性も捨ててしまいます。カスタム日付から標準日付への変換は可能ですが、これらの値を常にラップおよびラップ解除したいですか? おそらくそうではありません。独自の型を使用するmoment.jsのようなライブラリでさえ、標準のデータ型を拡張またはカプセル化することによってそれを行います。互換性は、バイト空間よりもはるかに重要です。
JavaScript の日付には多くの問題がありますが、エポックとして 1970 年 1 月 1 日を選択したのは良いことでした。何かができるからといって、そうすべきだというわけではありません。
また、ディスク容量は通常、アプリケーションを実行するための最も安価なコンポーネントであることを考慮してください。何百万ものレコードがあっても、せいぜい数十メガバイトしか節約できません。ハイサイドのエラーだけにして、この巧妙なハックで 200 MB 節約したとしましょう。Amazon の最上位のプロビジョンド IOPS クラウド ストレージは、1 GB あたり月額 0.125 ドルです。おめでとうございます。年間で 7.68 ドル節約できました。