Java Joda Time-将字符串转换为具有特定时区和特定格式的日期时间
我想将字符串日期转换为特定时区和特定格式的DateTime对象。我怎么做 字符串日期可以是世界上使用的任何格式。示例MM-DD-YYYY、YYYY-MM-DD、MM/DD/YY ,MM/DD/YYYY等。时区可以是用户指定的任何法定时区 示例-将太平洋时区的YYYY-MM-DD转换为MM/DD/YY 用于构建能够分析/格式化多个Java Joda Time-将字符串转换为具有特定时区和特定格式的日期时间,java,jodatime,Java,Jodatime,我想将字符串日期转换为特定时区和特定格式的DateTime对象。我怎么做 字符串日期可以是世界上使用的任何格式。示例MM-DD-YYYY、YYYY-MM-DD、MM/DD/YY ,MM/DD/YYYY等。时区可以是用户指定的任何法定时区 示例-将太平洋时区的YYYY-MM-DD转换为MM/DD/YY 用于构建能够分析/格式化多个DateTimeFormats的格式化程序,并将生成的DateTimeFormatter设置为使用指定的DateTimeZone: DateTimeParser[] pa
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”)
是否需要指定“特定”字符串、时区和格式?在我添加了一些行并获得了一个输出时,这里有一些示例。系统输出打印LN(dttm1);系统输出打印LN(dttm2);系统输出打印LN(dttm3);输出为-2012-01-31T00:00:00.000Z 2012-01-31T00:00:00.000Z 2012-01-31T00:00:00.000Z我无法正确理解代码。这是否将解析器中的所有4种格式转换为“YYYY-MM-DD”+0s格式?我怎样才能去掉所有的零呢?@davidblaine:那是因为你有一个DateTime
对象。如果只需要格式为YYYY-MM-DD
的字符串,请调用dttm1.toString(“yyy-MM-DD”)
。