2014-03-30 74 views
1

嗨,大家好,我在時區的概念工作的androidAndroid的時區ID不使用系統時區IDS問題匹配

我的工作理念是,我想從App服用時區改變Android平板電腦的時區變量在應用程序中。我得到了系統的時區作爲變量的值,即像

Dateline Standard Time 
UTC-11 
Samoa Standard Time 
Hawaiian Standard Time 
Alaskan Standard Time 
Pacific Standard Time (Mexico) 
Pacific Standard Time 
US Mountain Standard Time 
Mountain Standard Time (Mexico) 
Mountain Standard Time 
Central America Standard Time 
Central Standard Time 
Central Standard Time (Mexico) 
Canada Central Standard Time 
SA Pacific Standard Time 


     From android case, I am getting Timezone Id's like   

Africa/Harare 
Africa/Johannesburg 
Africa/Kigali 
Africa/Lubumbashi 
Africa/Lusaka 
Africa/Maputo 
Africa/Maseru 
Africa/Mbabane 
Africa/Tripoli 
Asia/Amman 
Asia/Beirut 
Asia/Istanbul 
Asia/Jerusalem 
Asia/Nicosia 
Asia/Tel_Aviv 
CAT 
EET 
Egypt 
Etc/GMT-2 
Europe/Chisinau 
Europe/Helsinki    

和我的代碼是

if (mCalendar != null) { 
     mCalendar = Calendar.getInstance(); 
    } 
    else 
    {    
     String[] allTimeZones = TimeZone.getAvailableIDs(); 
     Arrays.sort(allTimeZones); 
     for (int i = 0; i < allTimeZones.length; i++) { 
     System.out.println(allTimeZones[i]); 
     } 

     TimeZone tz = TimeZone.getTimeZone(String.valueOf(Jordan Standard Time));   
     mCalendar = Calendar.getInstance(tz); 
     String name = tz.getID(); 
     System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " + name);       
    } 

爲「喬丹標準時間」是從應用程序變量是不喜歡平板電腦使用的Id,時區的時區沒有改變。

如果我取代「非洲/的黎波里」手動,將時區與此一更換時區..

我現在的問題是,我想系統時區轉換成平板電腦的時區ID和顯示它Android應用程序。

希望我解釋清楚我的問題。請問你們的任何人能幫助我在這個問題上...

在此先感謝...

回答

0

PLZ使用此功能,也就是如果你從你的android手機更改時區顯示格林尼治標準時間顯示。

public static String GetDateForGMTDate(String dateString) { 
     SimpleDateFormat formatter = new SimpleDateFormat(
       "yyyy-mm-dd"); 
     SimpleDateFormat formatter1 = new SimpleDateFormat(
       "yyyy-mm-dd"); 
     Date date = null; 
     try { 

      date = formatter.parse(dateString); 
      System.out.println(date); 
      System.out.println(formatter.format(date)); 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(date); 
      Log.i("Time zone", "gettime=" + cal.getTime()); 
      cal.add(Calendar.MINUTE, (-1 * getTimeZoneDifference())); 
      Log.i("Time zone", "after gmt +gettime=" + cal.getTime()); 
      date = cal.getTime(); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return formatter1.format(date); 
    } 



public static final int getTimeZoneDifference() { 
     long currentTime = System.currentTimeMillis(); 

     int gmtcurrentOffset = TimeZone.getDefault().getOffset(currentTime); 
     int gmtOffset = TimeZone.getTimeZone("GMT").getOffset(currentTime); 
     int minuteDifference = (((gmtOffset - gmtcurrentOffset)/1000)/60); 
     return minuteDifference; 
    } 

使用第一功能,並通過與YYY-MM-DD甲酸作爲字符串的任何日期。並且該函數將返回gmt甲酸鹽實際日期時間。

我已經在使用它。 其工作fine.i希望它對你有用。

+0

我需要從一般變量中獲取時區,並根據該時區更改時間,而不是使用帶Calendar.getinstance()值的日期。 –

+0

@kumarsu np.you可以從變量中獲取它。你可以使用第二種方法。這是獲得您的變量時區和GMT時區之間的區別。 – dipali

+0

應該給出一個輸出以便快速瞭解 – Mahmudul