JAVA在几台设备上给出错误的日期结果

时间:2017-11-13 07:58:29

标签: java android date getdate

我有一个奇怪的问题我用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);
}

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

3 个答案:

答案 0 :(得分:0)

正在使用真实设备进行测试吗?

您还可以尝试使用Android的日历类。欲了解更多信息,请访问(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);

答案 1 :(得分: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());

答案 2 :(得分:-1)

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

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;
  }

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