我试图改变"周三,2015年4月22日05:45:42 GMT"到" yyyy MM dd - HH:mm"
但是这个字符串不适合所有这些简单格式,它在所有这三个
中都有例外new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'Z'");
答案 0 :(得分:2)
我可以重现你的问题,因为我也坐在非英语国家。解决方案是将英语指定为语言,因为您的输入包含英语单词/缩写(查看星期几和#34;星期三"!)。以下解决方案有效:
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date d = sdf.parse("Wed, 22 Apr 2015 05:45:42 GMT");
SimpleDateFormat out = new SimpleDateFormat("yyyy MM dd - HH:mm", Locale.ROOT);
System.out.println(out.format(d)); // output in the system timezone
您的应用程序的用途并不重要(无论是否在全球范围内)。 唯一重要的事实是您的文字输入的语言。如果这在语言上有所不同,那么您首先要确定相关设备的语言(可能是Locale.getDefault()
)并将其设置在SimpleDateFormat
- 对象上。
答案 1 :(得分:0)
在日期格式中使用小z
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'z'");
我已经使用下面的代码检查了它,它正在运行。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
try {
Date date =simpleDateFormat.parse("Wed, 22 Apr 2015 05:45:42 GMT");
Log.e(MainActivity.class.getSimpleName(),"date : "+date.toString());
} catch (ParseException e) {
e.printStackTrace();
}