所以我有一個問題,解析日期,使用JodaTime年表IslamicChronology
所以寫了一個小例子來演示我的問題。Joda時間錯誤或我的錯誤? (Java Joda時間日期作爲字符串解析)
下面的代碼:
import org.joda.time.Chronology;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.chrono.IslamicChronology;
import java.util.Date;
/**
* Test
*/
public class Test
{
public static void main(String[] args)
{
Date now = new Date();
String format = "dd MMM yyyy";
Chronology calendarSystem = IslamicChronology.getInstance();
DateTimeFormatter formatter = DateTimeFormat.forPattern(format).withChronology(calendarSystem);
String nowAsString = formatter.print(now.getTime());
System.out.println("nowAsString = " + nowAsString);
long parsedNowTs = formatter.parseMillis(nowAsString);
String parsedNowTsAsString = formatter.print(parsedNowTs);
}
}
和輸出:
nowAsString = 16 10 1430
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "16 10 1430" is malformed at "10 1430"
at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:634)
at test.Test.main(Test.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
...
我想的問題是,一個月的名字是數字,但我說的對?任何人有任何建議?如果年代學是格雷戈裏這不能被重建。
在此先感謝。
但是我提供給格式化是excatly什麼擺在首位創建的格式...所以我的理解是,JodaTime doen't知道第10個月(的Shawwal)的縮寫字符串格式是如此的默認使用它的號碼。然後,我會期待解析完全以相反的方式進行;它會檢查是否具有伊斯蘭年表的縮寫月份名稱,如果不是,則預計該月份是數字。或者我誤解了你在說什麼? – 2009-10-06 14:43:15