1

我有一个类似的字符串"2007-03-12T04:27:00.000+01:00",我想将其转换为 datetime 对象并进行一些计算。目前我正在使用joda.time. 当我将其转换为 joda DateTime 对象并尝试打印时,它显示为"2007-03-12T08:57:00.000+05:30". 如何打印具有相同时区的值。

4

2 回答 2

0
// get current moment in default time zone
DateTime dt = new DateTime();
// translate to London local time
DateTime dtLondon = dt.withZone(DateTimeZone.forID("Time Zone ID here"));//Europe/Paris

您可以在此处找到时区 ID 的详细列表

于 2012-10-19T17:56:44.320 回答
0

除非您指定所需的时区,否则 DateTime 默认为机器本地时区。DateTime(Object)构造函数使用偏移量来确定您的意思,但它不使用偏移量来设置时区。所以而不是:

    DateTime localDateTime = new DateTime("2007-03-12T04:27:00.000+01:00");

解析偏移量,得到合适的 DateTimeZone,交给 DateTime。

    DateTimeZone zone1 = DateTimeZone.forOffsetHoursMinutes(01, 00);
    DateTime localDateTime = new DateTime("2007-03-12T04:27:00.000", zone1);
于 2012-10-19T18:25:08.697 回答