4

我想将字符串日期转换为特定时区和特定格式的 DateTime 对象。我该怎么做 ?

字符串日期可以是世界上使用的任何格式。示例 MM-DD-YYYY、YYYY-MM-DD、MM/DD/YY、MM/DD/YYYY 等。时区可以是用户指定的任何合法时区。

示例 - 将 YYYY-MM-DD 转换为太平洋时区的 MM/DD/YY。

4

1 回答 1

8

用于DateTimeFormatterBuilder构建能够解析/格式化多个DateTimeFormats 的格式化程序,并将结果设置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")).

于 2012-09-14T00:12:29.837 回答