我对 Java 中的时区很好奇.我想从设备获取 UTC 时间(以毫秒为单位)并发送到服务器.服务器在向用户显示时间时会将其转换为本地时区.我系统中的时区是澳大利亚/悉尼(UTC + 11:00),我在测试时区时得到以下结果:
int year = 2014; int month = 0; int date = 14; int hourOfDay = 11; int minute = 12; int second = 0; Calendar c1 = Calendar.getInstance(); c1.set(year,month,date,hourOfDay,minute,second); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss z"); System.out.println(sdf.format(c1.getTime())); Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("UTC")); c2.set(year,second); System.out.println(sdf.format(c2.getTime()));
输出:
14/01/2014 11:12:00 EST 14/01/2014 22:12:00 EST
我认为我可以为 c2 设置 13/01/2014 00:12:00,因为 UTC 时间比我的晚 11 小时.日历不是按我预期的方式工作吗?
您的帮助将不胜感激.
添加了 z 以显示时区.这让我更加困惑,因为 Mac 说它的时区是(AEDT)澳大利亚东部夏令时间,但 Java 是 EST.无论如何,结果仍然不同,因为 EST 是 UTC-5 小时.