上获取新日期()
如果我有:
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
我需要在特定时区中获取Date类型,而不是String!
我的问题是,如何在"欧洲/伦敦"时区、
您问:
我的问题是,如何在"欧洲/伦敦"时区上获得
new Date()
你不能。java.util.Date
类表示时间上的瞬间。它不与任何本地时区对齐。
在内部,它跟踪自1970年1月1日午夜UTC以来的毫秒数。当使用时,可能会应用本地时区,但Date
类本身中不包含时区设置。
使用日历,例如:
TimeZone timeZone= TimeZone.getTimeZone("Europe/London"));
Calendar cal = Calendar.getInstance(timeZone);
此外,日期的好处是它们不依赖于时区,它只是自epoch以来的时间(以毫秒为单位)(不久前的某个时间)。你现在使用它的方式实际上是正确的解决方案。