我正在使用apache thrift开发服务,我需要定义时间段。日期很重要(YYYY-mm-dd
),时间应完全省略(HH:ii:ss
)。我找不到任何特定的日期/日期时间节俭数据类型,所以我正在考虑两种方法:
更复杂
int year, int month, int day,
不太复杂,但包括我不需要的时间部分。
int timestamp
是否有一种通用的节俭方法来表示日期(时间)类型?
我正在使用apache thrift开发服务,我需要定义时间段。日期很重要(YYYY-mm-dd
),时间应完全省略(HH:ii:ss
)。我找不到任何特定的日期/日期时间节俭数据类型,所以我正在考虑两种方法:
更复杂
int year,
int month,
int day,
不太复杂,但包括我不需要的时间部分。
int timestamp
是否有一种通用的节俭方法来表示日期(时间)类型?
我认为 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);
我不知道某些特定的格式偏好。我通常使用十进制编码的日期表示,因为它非常紧凑且易于阅读,如下所示:20130325
您可以创建一个结构来代表您 ThriftDate:
struct ThriftDate {
1: i32 year;
2: i32 month;
3: i32 day;
}