2

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

任何建议或见解将不胜感激。

4

1 回答 1

0

事实证明,问题是我在某些地方使用了 Date.toDay() 而我应该使用Date.toDate ()。呸!我不喜欢 Java 的 Date 实现。

感谢所有付出两分钱的人,让这对任何可能混淆toDay()toDate()的人发出警告。

于 2013-05-23T20:21:30.587 回答