2014-09-01 61 views
0

我想GMT時間轉換爲本地設備時zone.But GMT時間隱蔽GMT時間,本地時區 - 的問題

String res; 
    TimeZone tz = TimeZone.getDefault(); 
    String strTimeZone = tz.getDisplayName(false, TimeZone.SHORT); 

    SimpleDateFormat sdfgmt = new SimpleDateFormat("HH:mma"); 
    sdfgmt.setTimeZone(TimeZone.getTimeZone("GMT")); 

    SimpleDateFormat sdfmad = new SimpleDateFormat("HH:mma"); 
    sdfmad.setTimeZone(TimeZone.getTimeZone(strTimeZone)); 

    String inpt = "09:00am"; 
    Date inptdate = null; 
    try { 
     inptdate = sdfgmt.parse(inpt); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("GMT:\t\t" + sdfgmt.format(inptdate)); 
    System.out.println("Current Time:\t" + sdfmad.format(inptdate)); 
    res = sdfmad.format(inptdate); 

GMT時間返回爲0時00 am.I不能轉換的9:上午12點GMT時間到本地設備時區(GMT + 5:30)

+0

喜嘗試,這可能是幫你 http://stackoverflow.com/questions/10725246/java -android-convert-a-gmt-time-string-to-local-time – 2014-09-01 10:41:07

+0

代碼看起來沒問題。這真的是導致你的問題的代碼?考慮調試它。 – laalto 2014-09-01 11:13:10

回答

0

試試這個:

String inpt = "09:00amZ"; 
Date date = null; 
try { 
    date = new SimpleDateFormat("HH:mmaX").parse(inpt); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
SimpleDateFormat sdf = new SimpleDateFormat("HH:mma"); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); 
System.out.println(sdf.format(date)); 

一定要在輸入的末尾添加一個「Z」告訴,這一次是在GMT時區。

如果你需要一個默認的設備時區,而不是硬編碼代替sdf.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); 通過sdf.setTimeZone(TimeZone.getDefault());