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

标签 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;
}

问题来了...

当我在运行时单步执行解析代码时(代码 fragment 如下所示),日期转换方法返回预期日期。

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

如有任何建议或见解,我们将不胜感激。

最佳答案

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

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

关于java - Android:从秒数转换时的日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676897/

相关文章:

java - 使用 JAX-WS 将文件保存到 Sharepoint Server

java - 为什么同步在此代码中无法正常工作?

java - 相等的字符串在 Java 中不相等(==)?

android - 试图从一个布局中删除 View 并添加到另一个布局

linux - 如何在linux中将变量设置为当前日期和date-1?

java - 如何使用 javac 工具解析器从 java 文件中读取内联注释?

android - 用于返回 null 的艺术家的 MediaRetriever

android - 位置包示例对我不起作用 Flutter

android - 将长字符串转换为日期

mysql - 仅获取今天在 laravel 中创建的记录