任何时区的当前日期和时间(“墙”日期和时间)

时间:2012-09-19 16:08:02

标签: java datetime timezone jodatime

好吧,我知道这个问题已经在很多地方被问过很多次了,但是我还是不能解决这个问题。我尝试了java.util.Date以及JodaTime API。

我的问题是如何根据我的应用运行的时区返回当前日期和时间。这是我写的一个方法,它返回当前日期时间。问题是,它总是返回UTC时间。

private String getCurrentDate()
{
    DateTime currentDate = new DateTime(DateTimeZone.getDefault());
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM hh:mm");
    String dateNow = formatter.format(currentDate);
    return dateNow;
}

感谢您帮助我!

2 个答案:

答案 0 :(得分:1)

private String getCurrentDate()
{
      final DateFormat format = DateFormat.getDateTimeInstance();
      format.setTimeZone(Calendar.getInstance().getTimeZone());
      return format.format(new Date());
}

这应该可以胜任。获得真正的本地时区的棘手部分。但Calendar类的Java可以很好地解决这个问题。

作为DateFormat,如果您愿意,还可以使用SimpleDateFormat

答案 1 :(得分:0)

DateFormat(和SimpleDateFormat)默认为JVM的时区,该时区应该是您计算机的时区。

DateFormat format = new SimpleDateFormat("dd-MMM hh:mm");
System.out.println(format.format(new Date()));

在当地时区打印出来。您始终可以通过调用DateFormat明确设置setTimeZone的时区。

format.setTimeZone(TimeZone.getTimeZone("PDT"));