java如何解析带时区的日期,java – Joda时间解析一个带时区的日期,并保留该时区...

我想解析一个日期,它是使用特定的时区创建的,将其转换为格式并返回。转换工作,但时区偏移总是设置为0000,根据需要添加/减去时差。如何获得格式并保持偏移正确?

我期待这样:2012-11-30T12:08:56.23 07:00

但是得到这个:2012-11-30T05:08:56.23 00:00

执行:

public static final String ISO_8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSZZ";

public static String formatDateToISO8601Standard(Date date) {

DateTime dateTime = new DateTime(date);

DateTimeFormatter df = DateTimeFormat.forPattern(ISO_8601_DATE_FORMAT);

return dateTime.toString(df);

}

测试类:

private static final String DATE_WITH_TIMEZONE = "30 11 2012 12:08:56.235 +0700";

private static final String EXPECTED_DATE_WITH_TIMEZONE = "2012-11-30T12:08:56.23+07:00";

@Test public void testFormattingDateWithSpecificTimezone() throws Exception {

String result = JodaDateUtil.formatDateToISO8601Standard(createDate(DATE_WITH_TIMEZONE));

assertEquals("The date was not converted correctly", EXPECTED_DATE_WITH_TIMEZONE, result); }

private Date createDate(String dateToParse) throws ParseException {

DateTimeFormatter df = DateTimeFormat.forPattern("dd MM yyyy HH:mm:ss.SSS Z");

DateTime temp = df.parseDateTime(dateToParse);

Date date = temp.toDate();

return date; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值