Android:从秒转换时不正确的日期

时间:2013-05-21 18:23:47

标签: java android date xml-parsing seconds

我正在将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对象有点混乱,但是它们会表现得像这样吗?

非常感谢任何建议或见解。

1 个答案:

答案 0 :(得分:0)

事实证明,问题是我在一些我应该使用 Date.toDate的地方使用 Date.toDay() () 代替。哎呀!我不喜欢Java的Date实现。

感谢所有给你两分钱的人,并且对于那些可能会将 toDay() 混淆的人发出警告TODATE()