我正在将XML字符串中的一些日期数据解析为模型对象的层次结构。日期采用10位数秒格式。我使用下面的方法将这些秒转换为Date对象
public static Date getDateFromSecondsString(String seconds){
try{
long millis = Long.parseLong(seconds) * 1000;
Date date = new Date(millis);
return date;
}
catch(Exception ex){
ex.printStackTrace();
}
return null;
}
这是问题......
当我在运行时单步执行解析代码时(其代码片段如下所示),日期转换方法将返回预期日期。
Element startDateElt = eventElt.getChild("start_date");
if(startDateElt != null){
startDateElt.setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
currEvent.startDate = DateTimeUtil.getDateFromSecondsString(body);
}
});
}
但是,一旦我用解析的数据填充模型对象,日期就错了。以下是一些例子:
Seconds: 1369206000, should be: 2013-05-22, unfortunately is: 2013-05-03
Seconds: 1369292400, should be: 2013-05-23, unfortunately is: 2013-05-04
Seconds: 1369551600, should be: 2013-05-26, unfortunately is: 2013-04-30
Seconds: 1369638000, should be: 2013-05-27, unfortunately is: 2013-05-01
Seconds: 1369724400, should be: 2013-05-28, unfortunately is: 2013-05-02
我查看了我的代码,确保没有任何内容正在修改解析XML的时间和显示日期的时间之间的日期。我知道Java / Android中的Date对象有点混乱,但是它们会表现得像这样吗?
非常感谢任何建议或见解。
答案 0 :(得分:0)
事实证明,问题是我在一些我应该使用 Date.toDate的地方使用 Date.toDay() () 代替。哎呀!我不喜欢Java的Date实现。
感谢所有给你两分钱的人,并且对于那些可能会将 toDay() 与 混淆的人发出警告TODATE() 强>