如何在apache thrift中表示日期类型

时间:2013-03-24 20:18:15

标签: date types thrift

我正在使用apache thrift开发服务,我需要定义一段时间。日期很重要(YYYY-mm-dd),时间应该完全省略(HH:ii:ss)。我找不到任何具体的日期/日期时间节俭数据类型,所以我在考虑两种方法:

  1. 更复杂

    int year,
    int month,
    int day,
    
  2. 不太复杂,但包括我不需要的时间部分。

    int timestamp
    
  3. 是否有一种常见的节俭方法来表示日期(时间)类型?

3 个答案:

答案 0 :(得分:5)

我认为Thrift IDL上没有日期表示。我们在项目中使用这种表示法。

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;

    }

String可以更轻松地使用JODA Operations

- 编辑 -

我不知道你打算存储什么时间戳。例如,如果您想要计算当前实例已发生的事务并将其存储到该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);

答案 1 :(得分:2)

我不知道某些特定的格式偏好。我通常使用十进制编码的日期表示,因为它非常紧凑且易于阅读,如下所示:20130325

答案 2 :(得分:1)

你可以创建一个代表ThriftDate的结构:

struct ThriftDate {
  1: i32 year;
  2: i32 month;
  3: i32 day;
}