我想将字符串日期转换为特定时区和特定格式的日期时间对象。我该怎么做 ?乔达时间 - 将字符串转换为具有特定时区并以特定格式的日期时间
字符串日期可以是世界上使用的任何格式。示例MM-DD-YYYY,YYYY-MM-DD,MM/DD/YY ,MM/DD/YYYY等。TimeZone可以是用户指定的任何合法时区。
示例 - 将太平洋时区的YYYY-MM-DD转换为MM/DD/YY。
我想将字符串日期转换为特定时区和特定格式的日期时间对象。我该怎么做 ?乔达时间 - 将字符串转换为具有特定时区并以特定格式的日期时间
字符串日期可以是世界上使用的任何格式。示例MM-DD-YYYY,YYYY-MM-DD,MM/DD/YY ,MM/DD/YYYY等。TimeZone可以是用户指定的任何合法时区。
示例 - 将太平洋时区的YYYY-MM-DD转换为MM/DD/YY。
使用DateTimeFormatterBuilder
建立一个格式,它能够解析/格式的多个DateTimeFormat
S,并设置导致DateTimeFormatter
使用指定DateTimeZone
:
DateTimeParser[] parsers = {
DateTimeFormat.forPattern("MM-dd-yyyy").getParser(),
DateTimeFormat.forPattern("yyyy-MM-dd").getParser(),
DateTimeFormat.forPattern("MM/dd/yyyy").getParser(),
DateTimeFormat.forPattern("yyyy/MM/dd").getParser()
};
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(null, parsers)
.toFormatter()
.withZone(DateTimeZone.UTC);
DateTime dttm1 = formatter.parseDateTime("01-31-2012");
DateTime dttm2 = formatter.parseDateTime("01/31/2012");
DateTime dttm3 = formatter.parseDateTime("2012-01-31");
要格式化给DateTime
你可以只使用dttm1.toString("yyyy-MM-dd"))
。
我添加了一些行并得到了一个输出。 System.out.println(dttm1); System.out.println(dttm2); System.out.println(dttm3); 输出为 - 2012-01-31T00:00:00.000Z 2012-01-31T00:00:00.000Z 2012-01-31T00:00:00.000Z –
我不能够正确地理解代码。这是否将解析器中的所有4种格式转换为“YYYY-MM-DD”+ 0格式?我如何删除所有这些零? –
@davidblaine:那是因为你有一个'DateTime'对象。如果你只是想要一个格式为“YYYY-MM-DD”的字符串,可以调用'dttm1.toString(“YYYY-MM-DD”)'。 –
小心给'特定'字符串,时区和格式? –
@AlexanderPogrebnyak - 完成。 –
[Joda Time]有一些例子(http://joda-time.sourceforge.net/quickstart.html) – Pao