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