【发布时间】:2015-02-22 06:21:03
【问题描述】:
我正在尝试使用以下类似代码解析Joda-Time 的时间(从Using Joda Date & Time API to parse multiple formats 中的btiernay 复制)
DateTimeParser[] parsers = {
DateTimeFormat.forPattern( "yyyy-MM-dd HH" ).getParser(),
DateTimeFormat.forPattern( "yyyy-MM-dd" ).getParser() };
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append( null, parser).toFormatter();
DateTime date1 = formatter.parseDateTime( "2010-01-01" );
DateTime date2 = formatter.parseDateTime( "2010-01-01 01" );
但是,该应用程序可能在海外使用,这意味着月份可能包含外语,
例如 Haz 在土耳其语中是六月的缩写,我如何让它解析“07.Haz.2014”,它会抛出 java.lang.IllegalArgumentException: Invalid format
【问题讨论】:
-
您是否尝试过使用土耳其语DateTimeZone?
-
首先,您需要一个接受月份names 以及月份numbers 的模式。其次,您可能必须为解析器提供一个语言环境(我不知道 Joda 的时间)。
-
@ElliottFrisch 不,不是时区。需要的是java.util.Locale,其语言将用于解析月份名称。时区根据当地时间调整,但与语言无关。
标签: java parsing datetime formatter