(JSR-310のような)Javaで1970年から2008年までのベースミリ秒の基準時間を変更することが可能です
質問
私はJavaで1970年から2008年までのベースミリ秒の参照を変更することができるようにしたいです 私は、データベースと一意のIDのスペースを節約できるという。
好ましくジョダタイムでます。
<ストライキ>はずのJava 7のリリースでは、今後のJSR-310は、それを実装しています。ストライキ>
<ストライキ>このリンクのの離散タイムラインのセクションでは、ミリ秒のカウントが
2008年に1970年から変更されたと述べています ストライキ><ストライキ> <のhref = "http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api .htmlを」REL = "nofollowをnoreferrer"> http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html ストライキ>
<時間>私が見ることができる唯一の他のオプションは、数学的にそれを毎回実装することです 私はレコードを検索する必要があります。
例えば。
DateTime dt = new DateTime();
long now = dt.getMillis();
DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);
long then = dt2.getMillis();
long smallerDate = now - then;
より小さい日付がDBに格納される
- 編集 -
だから私は、JSR-310を読み違え、それは不可能です。
スペースと、その後の頭痛を保存するためのより良い方法があります。 long型を計算するために、要求の数千を処理する。
私が移動する場所を私が知っていることは決してないだろうので、私は日付としてlong型を記録したかったです DBに、おそらくMySQLの=>は、Oracleます。
だから、私はちょうどBigIntsを望んでいた、タイムスタンプを望んでいませんでした。
解決
いいえ、あなたがすることはできませんし、あなたができれば、それは悪いアイデアだろう。データベース内のすべてのタイムスタンプは関係なく、番号がどのように大きなの、同じ空間を使用する予定です。 (あなたが数としてではなく、文字列か何かのように番号を記憶していると仮定。)
あなたがを場合は、実際にのはこれが欲しいさて、あなたはそれを自分で記述する必要があります。即ちデータベースにそれらを置く前に、あなたのタイムスタンプから時間を減算し、あなたがそれらを取り戻すときのタイムスタンプに時間を追加します。しかし、これはメンテナンスの問題を求めています。 (実際には、代わりに、データベースのネイティブdatetimeデータ型の使用してタイムスタンプが問題を求めている。)