1

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

2 回答 2

2

看起来您的 JVM 的时区不正确。尝试TimeZone在对象中显式设置为土耳其SimpleDateFormat,如下所示:

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
sdf.setTimeZone(TimeZone.getTimeZone("Turkey"));
String time=sdf.format(cal.getTime()); 
于 2012-05-08T09:51:56.060 回答
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(...))

于 2012-05-08T09:55:46.840 回答