有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 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);

共 (2) 个答案

  1. # 1 楼答案

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

    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
    sdf.setTimeZone(TimeZone.getTimeZone("Turkey"));
    String time=sdf.format(cal.getTime()); 
    
  2. # 2 楼答案

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

    但是,如果确实需要强制时区,有两种方法:

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

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