我正在尝试将 Twitter“created_at”转换为阿根廷日期时间。 如果我这样做:
final String TWITTER="EEE MMM dd HH:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(TWITTER,new Locale("en"));
效果很好。
但是如果我更改为 Locale("es")
、Locale("es","ES")
或 Locale("es","AR”)
,
我收到此错误:
07-01 11:09:29.153: W/System.err(331): java.text.ParseException: Unparseable date: "Tue Jul 01 13:57:36 +0000 2014"
为什么我无法将日期转换为本地时间?
编辑:
根据 Sotilios Delimanoris 告诉我的关于使用两种 SimpleDateFormat 的内容,一种用于解析,另一种用于格式,我已经这样做了:
final String TWITTER="EEE MMM dd HH:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(TWITTER,new Locale("en"));
Date mystring = sf.parse(text);
final String TWITTER2="dd-MM HH:mm:ss";
SimpleDateFormat sf2 = new SimpleDateFormat(TWITTER2,new Locale("es","AR")); System.out.println(sf2.format(mystring));
return sf2.format(mystring);
这是输出:
I/System.out(688): 01-07 18:41:31
一切正常,除了时间以外,它显示的时间比应有的时间多了 2 小时。 –
我尝试过这样设置时区:
sf2.setTimeZone(TimeZone.getTimeZone("UTC-3"));
现在更糟了,显示22:41:31
编辑2:
终于,它可以工作了。不知道为什么,但使用:
sf2.setTimeZone(TimeZone.getTimeZone("GMT-6"));
工作正常(在阿根廷仍然不是 GMT-6)
谢谢
最佳答案
您正在尝试解析我认为是西类牙语的日期字符串,但 Tue
和 Jul
不是西类牙语中的短单词。它们是英语单词的缩写。
关于java - SimpleDateFormat 无法解析的日期 如果语言环境为 ES,则会出现错误。推特 "Created_At",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512751/