所以我将时间戳保存为 Date
对象,将时区保存为 TimeZone
对象。
现在我想创建一个函数,它将一个 Date
对象和一个 TimeZone
对象作为参数,并返回一个使用时间戳。
例如:
输入:
Date TimeZone 12:00 Moscow Standard Time (UTC+3)
输出:
Date 3:00
编辑:
删除了关于 Calendar
最佳答案
java.util.Date
是一个绝对时间点。 0900 小时 UTC 和 1200 小时 UTC+3 是完全相同的 java.util.Date
对象。没有为了代表一个或另一个而对其进行“调整”。
要获得特定时区的人类可读表示,您可以在 DateFormat
对象上设置时区。
DateFormat format = new SimpleDateFormat("HH:mm");
format.setTimeZone(TimeZone.getTimeZone("UTC+3"));
String time = format.format(yourDate);
评论中提出的问题的解决方案:
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();
关于java - 如何根据时区将java日期转换为日期对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496155/