我正在尝试使用SimpleDateFormat
来解析与时区解析的一些不一致性,这里是日期格式,我正在用来解析:
static private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd, h:mmaa zzz", Locale.US);
要解析的日期字符串:
2013-03-20,美国东部时间下午3:36
三星解析失败,2.3.5适用于HTC 4.0.4和HTC 2.3.3。
以下是一些解析测试的输出:
HTC 4.0.4:
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 CET 2013 : lenient : true
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 CET 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 CET 2013 : lenient : false
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 CET 2013 : lenient : false
HTC 2.3.3:
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : false
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 GMT+01:00 2013 : lenient : false
三星2.3.5:
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : false
其他解析在三星上失败。
有人可以解释这种行为吗?
答案 0 :(得分:1)
不了解android,但在java中,您可以使用:java.lang.System.getProperties()
答案 1 :(得分:1)
目前Android上没有可用的JDK。
查看SimpleDateFormat的引用,只有一个版本。所以无论在任何Android操作系统级别上工作,都应该适用于所有级别 SimpleDateFormat的不稳定性很可能是由于不同设备上的locale不同。修复它使用一个区域设置而不是使用设备的默认区域设置。
new SimpleDateFormat(dataFormat,Locale.US);
答案 2 :(得分:0)
我在三星Galaxy 7平板电脑上遇到了类似的问题。
“EDT”不在TimeZone.getAvailableIDs()返回的列表中,因此使用“z”的SimpleDateFormat不起作用。
我将创建一个TZ缩写的哈希表,并将代码转换为+ = offset。
难以置信,真的......