将新Date()转换为不同的时区

时间:2014-09-30 13:24:16

标签: java date datetime time timezone

如果我有:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("Europe/London"));

String dateStr = dateFormat.format(new Date());
System.out.println(dateStr);

输出将是:2014-09-30 14:19:17当我的当地时间是2014-09-30 16:19:17

我需要在特定时区输入日期,而不是字符串类型!

我的问题是,我怎样才能在"欧洲/伦敦" 时区

上获得新日期()

2 个答案:

答案 0 :(得分:1)

你问:

  

我的问题是,我怎样才能获得new Date()"欧洲/伦敦"时区

你不能。 java.util.Date类及时代表即时。它未与任何本地时区对齐。

在内部,它跟踪自UTC时间1970年1月1日午夜以来的毫秒数。当您使用时,可能会应用本地时区,但Date类本身不包含时区设置。

答案 1 :(得分:0)

使用日历,例如:

TimeZone timeZone= TimeZone.getTimeZone("Europe/London"));

Calendar cal = Calendar.getInstance(timeZone);

另外,关于约会的好处是它们不依赖于TimeZone,它是自纪元以来的一段时间(一段时间以后)。你现在使用它的方式实际上是正确的解决方案。