JAVA 在多个设备上给我错误的日期结果

JAVA gives me wrong Date Results on Several devices

我有一个奇怪的问题,我使用 Java 获取当前日期,但我在多台设备上得到不同的结果,一个正确,另一个错误。 这是我的代码:

 public String getCurrentDate() {
     /// get date
     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
     dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Tehran"));
     Date date = new Date();
     System.out.println(dateFormat.format(date)); //2017-11-13 18:20:46 correct time is 11am
     return dateFormat.format(date);
}

在给出错误结果的设备上我设置了自动时区使用网络提供的时区&设备的时间是正确的。

是否使用真实设备进行测试?

您也可以试试来自 Android 的日历 Class。如需更多信息,请访问 (https://developer.android.com/reference/java/util/Calendar.html)

检查下面的示例:

  Calendar current_time_cal = Calendar.getInstance();                                  
  current_time_cal.setTimeZone(TimeZone.getTimeZone("Asia/Tehran"));
  int hours = current_time.get(Calendar.HOUR);
  int current_am_pm = current_time.get(Calendar.AM_PM);
  current_time_cal.set(Calendar.HOUR_OF_DAY, (hours == 0)? 12 : hours);
  current_time_cal.set(Calendar.MINUTE, current_time.get(Calendar.MINUTE));
  current_time_cal.set(Calendar.SECOND, 0);

试试这个:

Calendar c = Calendar.getInstance();
System.out.println("Current time: " + c.getTime());

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(c.getTime());

您可以使用此方法从您的设备获取当前时间:

public String getCurrentDate() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Calendar calendar = Calendar.getInstance();
    String date = sdf.format(calendar.getTime());
    return date;
  }

此方法将return当前日期作为字符串。