我在数据库中存储了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);
缺少的部分是,正如JavaDoc所指出的那样,内部的DateTime对象由“距Java纪元1970-01-01T00:00:00Z的毫秒数”表示。
因此,DateTime没有时区。不管您从中进行解析的字符串中所表示的时区如何,代表同一时间的两个DateTime对象都是完全相同的。
DateTime在格式化时仅“具有”时区。对其进行格式化时,将得到一个带有所需时区的字符串,并相应地调整了时间表示。
两个日期(dt和d2)对您来说看起来相同的原因是因为您没有格式化它们(您使用了它们的隐式“ toString()”方法),所以两个都被格式化为本地时区。