java - 如何根据时区将java日期转换为日期对象?

标签 java date timezone

所以我将时间戳保存为 Date 对象,将时区保存为 TimeZone 对象。

现在我想创建一个函数,它将一个 Date 对象和一个 TimeZone 对象作为参数,并返回一个使用时间戳。

例如:

输入:

Date    TimeZone 

12:00   Moscow Standard Time (UTC+3)

输出:

Date 

3:00    

编辑: 删除了关于 Calendar

的注释

最佳答案

java.util.Date 是一个绝对时间点。 0900 小时 UTC1200 小时 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/

相关文章:

javascript - 提交表格前重新格式化日期

c++ - 在类/对象中存储日期和时间的最佳做法是什么?

mysql - Ruby on Rails 4 : Unexpected result when filter datetime field in specified time zone with wice_grid

java - 为什么 Joda DateTimeZone 名称不返回我传入的内容?

python - 显示 : character in the timezone offset using datetime. strftime

java - 如何在向模型添加行时更改 JTable 行背景颜色?

java - 如何使用java进程一条一条执行windows命令

java - 处理 - 将字符串解析为 float NullPointerException 时抛出

java - 如何在 JComboBox 顶部添加默认项目,如添加新项目

iphone - NSPredicate 仅过滤日期字段的 "year"部分