得到错误的时区android

时间:2014-04-10 14:36:10

标签: android

我正在使用此功能获取真实设备上的当前时间(在Galaxy S4上测试):

private String getCurrentTime(){
    TimeZone mtz = TimeZone.getTimeZone(TimeZone.getDefault().toString());
    Calendar calendar = Calendar.getInstance(mtz);
    String current_time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
    return current_time ;
}

但是实时(例如):

十八时48分16秒

函数的返回值:

14时17分41秒

自动日期&已检查手机上的时间和自动时区 !!

但是这个功能有效:

private String getCurrentTime(){
    TimeZone mtz = TimeZone.getTimeZone("GMT+04:30");
    Calendar calendar = Calendar.getInstance(mtz);
    String current_time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
    return current_time ;
}

另一个问题:

当我更改手机上的时间时,前一个功能的返回值会发生变化,如何防止这种情况发生?换句话说,我怎样才能实时(没有任何互联网连接)?

1 个答案:

答案 0 :(得分:1)

在第一个示例中,由于toString转换,您在GMT中收到时间。要获取设备时区,只需使用:

  TimeZone mtz = TimeZone.getDefault();