5

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

  1. 更复杂

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

    int timestamp
    

是否有一种通用的节俭方法来表示日期(时间)类型?

4

3 回答 3

6

我认为 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;

    }

字符串使使用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

我不知道某些特定的格式偏好。我通常使用十进制编码的日期表示,因为它非常紧凑且易于阅读,如下所示: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 回答