好吧,我知道这个问题在很多地方被问了很多次,但我还不能解决这个问题。我尝试了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;
}
谢谢你帮我!
private String getCurrentDate()
{
final DateFormat format = DateFormat.getDateTimeInstance();
format.setTimeZone(Calendar.getInstance().getTimeZone());
return format.format(new Date());
}
这应该能胜任工作。获取真正的本地时区的棘手部分。但是Java的Calendar
类很好地实现了这一点。
作为DateFormat
,如果您愿意,也可以使用您的SimpleDateFormat
。
DateFormat
(和SimpleDateFormat
)默认为JVM的时区,应该是您计算机的时区。
DateFormat format = new SimpleDateFormat("dd-MMM hh:mm");
System.out.println(format.format(new Date()));
在本地时区打印。您总是可以通过调用setTimeZone
来显式设置DateFormat
的时区。
format.setTimeZone(TimeZone.getTimeZone("PDT"));