将时区从字符串转换为UTC(JODA TIME)

问题描述 投票:0回答:1

我在数据库中存储了UTC时间戳。当我获取该UTC时间戳时,将其转换为字符串。我想获取该UTC时间戳字符串,并使用Joda Time将其转换为设备的本地时间。任何可能对此有所帮助的人。将不胜感激!这是我现在正在做的事情:

                String date = ""+ds.child("datecreated").getValue();

                DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

                DateTime dt = formatter.parseDateTime(date);

                DateTime dt2 = new DateTime(dt).toDateTime(DateTimeZone.getDefault());

                String personalDate = dt2.toString();

                dateTV.setText(personalDate);

                System.out.println("THIS IS THE FIRST TIME: " + dt + "THIS IS THE SECOND TIME: " + dt2); 
java android-studio datetime jodatime datetime-conversion
1个回答
0
投票

缺少的部分是,正如JavaDoc所指出的那样,内部的DateTime对象由“距Java纪元1970-01-01T00:00:00Z的毫秒数”表示。

因此,DateTime没有时区。不管您从中进行解析的字符串中所表示的时区如何,代表同一时间的两个DateTime对象都是完全相同的。

DateTime在格式化时仅“具有”时区。对其进行格式化时,将得到一个带有所需时区的字符串,并相应地调整了时间表示。

两个日期(dt和d2)对您来说看起来相同的原因是因为您没有格式化它们(您使用了它们的隐式“ toString()”方法),所以两个都被格式化为本地时区。

© www.soinside.com 2019 - 2024. All rights reserved.