Ser*_*ghi 16 java datetime jodatime
我有一个ISO 8601日期,让我们说: 2012-01-19T19:00-05:00
我的机器时区是 GMT+1
我正在尝试使用joda来解析它并将其转换为相应的GMT日期和时间:
DateTimeFormatter simpleDateISOFormat = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mmZZ");
creationDate = simpleDateISOFormat.withZone(DateTimeZone.UTC)
.parseDateTime(date + "T" + time)
.toDate();
Run Code Online (Sandbox Code Playgroud)
现在我期待的结果是 Fri Jan 20 00:00:00 CET 2012
相反,我得到: Fri Jan 20 01:00:00 CET 2012
我相信这是因为我在时区GMT + 1
.
有没有办法解析日期伪装在不同的时区?
编辑:基本上问题是当我调用toDate()
方法时.该方法根据需要将其转换DateTime
为a Date
,但我会在本地时间对其进行转换.
有人知道一种不会施加此限制的转换方法吗?
Mar*_*nor 22
这是一个工作的groovy测试用例.显示其他时区的时间显示方式.
import org.joda.time.*
import org.joda.time.format.*
@Grapes([
@Grab(group='joda-time', module='joda-time', version='1.6.2')
])
class JodaTimeTest extends GroovyTestCase {
void testTimeZone() {
DateTimeFormatter parser = ISODateTimeFormat.dateTimeParser()
DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis()
DateTime dateTimeHere = parser.parseDateTime("2012-01-19T19:00:00-05:00")
DateTime dateTimeInLondon = dateTimeHere.withZone(DateTimeZone.forID("Europe/London"))
DateTime dateTimeInParis = dateTimeHere.withZone(DateTimeZone.forID("Europe/Paris"))
assertEquals("2012-01-20T00:00:00Z", formatter.print(dateTimeHere))
assertEquals("2012-01-20T00:00:00Z", formatter.print(dateTimeInLondon))
assertEquals("2012-01-20T01:00:00+01:00", formatter.print(dateTimeInParis))
}
}
Run Code Online (Sandbox Code Playgroud)
注意:
归档时间: |
|
查看次数: |
18100 次 |
最近记录: |