为给定时区转换日期/时间 - java
2022-08-31 11:29:21
我想将此 GMT 时间戳转换为 GMT+13:
2011-10-06 03:35:05
我已经尝试了大约100种不同的DateFormat,TimeZone,Date,GregorianCalendar等组合来尝试完成这个非常基本的任务。
此代码执行我当前时间所需的操作:
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("GMT+13"));
String newZealandTime = formatter.format(calendar.getTime());
但我想要的是设置时间,而不是使用当前时间。
我发现每当我试图像这样设置时间时:
calendar.setTime(new Date(1317816735000L));
使用本地计算机的时区。为什么?我知道当“new Date()”返回UTC + 0时间时,为什么当您以毫秒为单位设置时间时,它不再假设时间是UTC?
是否可以:
- 设置对象上的时间(日历/日期/时间戳)
- (可能)设置初始时间戳的时区 (calendar.setTimeZone(...))
- 使用新的时区设置时间戳的格式 (formatter.setTimeZone(...)))
- 返回具有新时区时间的字符串。(formatter.format(calendar.getTime()))