我想將字符串日期轉換爲特定時區和特定格式的日期時間對象。我該怎麼做 ?喬達時間 - 將字符串轉換爲具有特定時區並以特定格式的日期時間
字符串日期可以是世界上使用的任何格式。示例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