我的要求是这样的:
我在数据库和时区中以毫秒为单位保存时间,例如以毫秒为1223123123232单位的时间 很长,而时区为Asia/Calcutta。我必须将其转换Africa/Asmara为时区。
1223123123232
Asia/Calcutta
Africa/Asmara
long l = 1223123123232l; TimeZone tz = TimeZone.getTimeZone("Asia/Calcutta"); long tzOff = tz.getOffset(l); java.util.Date d = new Date(l-tzOff); // WHY THIS?? DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z"); df.setTimeZone(TimeZone.getTimeZone("Africa/Asmara"));// required timezone String s = df.format(d); System.out.println(s);
要检查我引用此:链接
我的问题是:
(l-tzOff)
就像是:
long l = 1223123123232l; java.util.Date d = new Date(l); DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z"); df.setTimeZone(TimeZone.getTimeZone("Africa/Asmara"));// required timezone String s = df.format(d); System.out.println(s);
我的系统时区是Asia/Calcutta,我想将Africa/Bujumbura时Europe/Vatican区中的日期转换为时区。以上代码在这种情况下不起作用?为什么会这样呢?
Africa/Bujumbura
Europe/Vatican
Java日期不了解时区。因此,如果我在纽约保存14H00,尽管毫秒值相同,但它将与巴黎的14H00不同。您需要使用唯一的引用来保存日期。人们经常选择GMT + 0。
如果您需要检查时区的本地时间,可以使用我在这里开发的工具。
要回答您的问题: