【发布时间】:2012-03-20 08:10:04
【问题描述】:
我已经尝试了大约一个小时,但它似乎无法正常工作。
我基本上是从数据库中读取日期字符串,格式为 yyyy-MM-dd HH:mm:ss (2012-03-01 14:32:00)。
此时我只有字符串,没有时区信息。这个时间是在我们的服务器上创建的,并最终进入设备数据库,我知道这是东部标准时间。
所以我基本上尝试了以下代码:
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sourceFormat.setTimeZone(TimeZone.getTimeZone("EST"));
Date parsed = sourceFormat.parse("2012-03-01 10:18:14");
TimeZone tz = TimeZone.getDefault();
SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
destFormat.setTimeZone(tz);
String result = destFormat.format(parsed);
Log.v("TZ", result);
我的模拟器是 EST,所以当我记录时间时它显示 2012-03-01 10:18:14,这是正确的。
但如果我将 sourceFormat 的时区更改为 America/Los Angeles,我会得到 2012-03-01 05:18:14 的输出。
现在我不是专家,但我很确定洛杉矶比蒙特利尔晚 3 小时(我们办公室所在的东部标准时间)。因此,如果我将时间 2012-03-01 10:18:14 称为美国/洛杉矶时间,然后将其转换为 EST,我希望看到 2012-03-01 13:18:14。
发生了什么事?
任何帮助将不胜感激。
非常感谢。
【问题讨论】:
-
你能在真机上测试吗?有时模拟器注定要失败。
-
是的,我可以在设备上进行测试,我明天一进去就试试。我知道模拟器并不总是表现得像真实的东西,但它确实显示了当前时间,就像它在我的桌面上一样。