Jim*_*mmy 1 java timezone date
所以我将时间戳保存为Date
对象,将时区保存为TimeZone
对象.
现在我想创建一个函数,它将一个Date
对象和一个TimeZone
对象作为参数,并返回一个Date
使用时间戳调整的对象.
例如 :
输入:
Date TimeZone 12:00 Moscow Standard Time (UTC+3)
输出:
Date 3:00
编辑:
删除注意事项Calendar
A java.util.Date
是绝对时间点. UTC时间和时间12:00 UTC + 3是完全相同的java.util.Date
对象.为了代表一个或另一个,没有"调整".
要获得特定时区的人类可读表示,可以在DateFormat
对象上设置时区.
DateFormat format = new SimpleDateFormat("HH:mm");
format.setTimeZone(TimeZone.getTimeZone("UTC+3"));
String time = format.format(yourDate);
Run Code Online (Sandbox Code Playgroud)
评论中提出的问题的解决方案:
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("UTC+3"));
cal1.setTime(yourDate);
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal2.clear();
cal2.set(Calendar.YEAR, cal1.get(Calendar.YEAR));
cal2.set(Calendar.MONTH, cal1.get(Calendar.MONTH));
cal2.set(Calendar.DATE, cal1.get(Calendar.DATE));
cal2.set(Calendar.HOUR_OF_DAY, cal1.get(Calendar.HOUR_OF_DAY));
//simile for whatever level of field precision is needed
Date shiftedDate = cal2.getTime();
Run Code Online (Sandbox Code Playgroud)