基于区域设置的Joda-Time DateTime格式

我从另一个系统收到一个字符串日期,我知道该日期的区域设置(也可从其他系统获得)。 我想将此String转换为Joda-Time DateTime对象,而不显式指定目标模式。

因此,例如,我想将此字符串“09/29/2014”仅使用区域设置转换为日期对象,而不是将日期格式硬编码为“mm / dd / yyyy”。 我不能对格式进行硬编码,因为这会根据我收到的日期的当地情况而有所不同。

String localizedCalendarDate = DateTimeFormat.shortDate().print(new LocalDate(2014, 9, 29)); // uses in Germany: dd.MM.yyyy // but uses in US: MM/dd/yyyy LocalDate date = DateTimeFormat.mediumDate().withLocale(Locale.US).parseLocalDate("09/29/2014"); DateTime dt = date.toDateTimeAtStartOfDay(DateTimeZone.forID("America/Los_Angeles")); 

如您所见,您还需要知道时钟时间(=示例中的开始日期)和时区(示例中为US-California),以便将解析日期转换为DateTime等全局时间戳。