安卓 Dateformat不返回实时Java
这个密码给了我09:40(我在土耳其),但我现在的时间是12:40 我翻了很多页找这个,但找不到任何解决办法。 我该怎么做才能修好它
String DATE_FORMAT_NOW = "dd-MM-yyyy HH:mm:ss";
Calendar cal = Calendar.getInstance();
String timeZone = cal.getTimeZone().getDisplayName();
System.out.println("timeZone is : " + timeZone );
System.out.println("Current Time in MiliSeconds : " + cal.getTimeInMillis() );
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String time=sdf.format(cal.getTime());
System.out.println(time);
我的时间是12:40,为什么这个代码给出了08:27
DateFormat formatterHourSecond = new SimpleDateFormat("HH:mm");
String saatStr = formatterHourSecond.format(tarih);
System.out.println("Saat : " + saatStr);
# 1 楼答案
看起来JVM的时区不正确。尝试在
SimpleDateFormat
对象中将TimeZone
显式设置为Turkey,如下所示:# 2 楼答案
你机器的时区有点不正确。通常,这是由操作系统(通过区域设置)完成的,JVM会接收它。因此,最好的解决方案实际上是在操作系统中设置正确的设置,在重新启动应用程序后,您应该获得正确的时间。如果您计划让您的应用程序在不同的国家/地区运行,这尤其好
但是,如果确实需要强制时区,有两种方法:
在SimpleDataFormat上执行此操作:http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setTimeZone(java.util.TimeZone)
为整个应用程序全局执行:TimeZone.setDefault(TimeZone.getTimeZone(...))