5

私はapachethriftを使用してサービスを開発しており、期間を定義する必要があります。日付は重要であり(YYYY-mm-dd)、時刻は完全に省略してください(HH:ii:ss)。特定の日付/日時の節約データ型が見つからなかったため、2つのアプローチについて考えています。

  1. より複雑

    int year,
    int month,
    int day,
    
  2. それほど複雑ではありませんが、私が必要としない時間帯が含まれています。

    int timestamp
    

日付(時刻)タイプを表すための一般的な節約アプローチはありますか?

4

3 に答える 3

6

ThriftIDLには日付表現はないと思います。プロジェクトではこの表記を使用します。

typedef string Timestamp

次に、このようなタイムスタンプの使用が必要な後続のモデルでその表記を使用します

struct blah{

    /**
    * TODO:list what notation this dateTime represents. eg ISO-8601
    * or if its in the format like YYYY-mm-DD you mentioned.
    */
    1:Timestamp dateTime;

    }

文字列を使用すると、 JODA操作を簡単に使用できます

- 編集 -

保存するタイムスタンプがわかりません。たとえば、トランザクションが発生した現在のインスタンスを計算し、それをそのthriftオブジェクトに格納する場合は、Jodaを使用してこれを行うことができます。

    String timestamp = new DateTime().toString("YYYY-MM-dd"); //2013-03-26 This will be string value generated. It will convert the current time to format you seek to output.
    //Use the generated thrift object.
    Blah newblah = new Blah();
    blah.setDateTime(timestamp);
于 2013-03-25T20:33:54.730 に答える
2

私はいくつかの特定のフォーマットの好みを知りません。私は通常、10進数でエンコードされた日付表現を使用します。これは、次のように非常にコンパクトで人間が読める形式であるためです。20130325

于 2013-03-25T16:34:05.350 に答える
1

ThriftDateを表す構造を作成できます。

struct ThriftDate {
  1: i32 year;
  2: i32 month;
  3: i32 day;
}
于 2017-08-22T18:52:38.033 に答える