我正在使用apache thrift开发服务,我需要定义一段时间。日期很重要(YYYY-mm-dd
),时间应该完全省略(HH:ii:ss
)。我找不到任何具体的日期/日期时间节俭数据类型,所以我在考虑两种方法:
更复杂
int year,
int month,
int day,
不太复杂,但包括我不需要的时间部分。
int timestamp
是否有一种常见的节俭方法来表示日期(时间)类型?
答案 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;
}