如何解析日期包含语言环境的字符串
问题描述:
我有一个日期字符串“星期六1月28日00:00:00 IST 2012”,我试图用Joda的DateTimeFormatter解析它。我有以下代码,不知道在哪里,它出错了。如何解析日期包含语言环境的字符串
DateTimeFormatter dateFmt = DateTimeFormat
.forPattern("EEE MMM dd HH:mm:SS ZZZ yyyy");
DateTime dateTime = dateFmt.parseDateTime(dateString);
异常:java.lang.IllegalArgumentException异常:无效的格式为: “周六1月28日00:00:00 IST 2012” 在 “2012 IST” 格式不正确。请帮我解决这个问题。谢谢你的帮助。
答
我不知道为什么,但它工作,如果我用SimpleDateFormat
代替DateTimeFormatter
。
CODE:
public static void main(String[] args) throws ParseException {
String FORMAT = "EEE MMM dd HH:mm:SS zzz yyyy";
String dateString = "Sat Jan 28 00:00:00 IST 2012";
SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT);
Date date = dateFormat.parse(dateString);
System.out.println(new DateTime(date));
DateTimeFormatter dateFmt = DateTimeFormat.forPattern(FORMAT);
// System.out.println(dateFmt.parseLocalDateTime(dateString));
// System.out.println(dateFmt.parseDateTime(dateString));
System.out.println(dateFmt.parseLocalTime(dateString));
}
答
使用zzz
(小写),不ZZZ
(大写)。从the API docs:
z time zone text Pacific Standard Time; PST
Z time zone offset/id zone -0800; -08:00; America/Los_Angeles
如果你的意思是当时的印度标准时间可能会调用'公共静态的String [] getAvailableIDs(INT rawOffset)'和'5.5',看看它返回,应该有像' Kolkatta /印度'不确定,看看它 – 2012-03-30 15:14:20
嘿,IST在那里,我只是试图打印所有这些。 (字符串字符串:TimeZone.getAvailableIDs()){ \t \t \t System.out.println(string); \t \t}' – Ahamed 2012-03-30 15:17:29
然后只是将'ZZZ'替换为'zzz',就像Matt建议的那样 – 2012-03-30 15:18:03