Dateformat不是返回true时间 - Java

时间:2012-05-08 09:42:42

标签: java android datetime

这段代码给了我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);

2 个答案:

答案 0 :(得分:2)

看起来你的JVM的TimeZone不正确。尝试在TimeZone对象中明确地将SimpleDateFormat设置为土耳其,如下所示:

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
sdf.setTimeZone(TimeZone.getTimeZone("Turkey"));
String time=sdf.format(cal.getTime()); 

答案 1 :(得分:1)

您的机器的时区有点不正确。通常这是由操作系统完成的(通过区域设置),JVM会选择它。因此,最佳解决方案实际上是在您的操作系统中设置正确的设置,并在重新启动应用程序后,您应该获得正确的时间。如果您打算让您的应用程序在不同的国家/地区运行,这一点尤其会更好。

但是,如果你真的需要强制使用TimeZone,有两种方法可以做到:

  1. 在SimpleDateFormat上执行此操作:http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setTimeZone(java.util.TimeZone

  2. 为您的整个应用程序全局执行:TimeZone.setDefault(TimeZone.getTimeZone(...))