2012-10-25 77 views
2

我開發了一個應用程序,因爲我需要保存事件日期和時間。默認情況下,時間和日期採用「美國/芝加哥」時區格式。現在,我需要將它們轉換爲用戶的設備時區格式。但我得到了錯誤的格式。如何在android中設置特定日期和時間的TimeZone?

我做了以下事情。

SimpleDateFormat curFormater1=new SimpleDateFormat("MM-dd-yyyy-hh:mm a");//10-23-2012-08:30 am 

curFormater1.setTimeZone(TimeZone.getTimeZone("America/Chicago")); 

curFormater1.setTimeZone(TimeZone.getDefault()); 

電流輸出: TimeZone.getTimeZone( 「美國/芝加哥」)被10-22-2012-10:00 PM TimeZone.getDefault()是10-23-2012-08:30 AM

需要的輸出 TimeZone.getTimeZone( 「美國/芝加哥」)是10-23-2012-08:30 AM TimeZone.getDefault()是10-23-2012-07:00 PM

+0

你想要什麼? – ckpatel

+0

我希望10-23-2012-8:30作爲「美國/芝加哥」時區格式,但它被視爲默認時區。 – koti

回答

1

一些例子

Convert time between timezone

Converting Times Between Time Zones

 import java.util.Calendar; 
     import java.util.GregorianCalendar; 
     import java.util.TimeZone; 

    public class TimeZoneExample { 
     public static void main(String[] args) { 

    // Create a calendar object and set it time based on the local 
    // time zone 

    Calendar localTime = Calendar.getInstance(); 
    localTime.set(Calendar.HOUR, 17); 
    localTime.set(Calendar.MINUTE, 15); 
    localTime.set(Calendar.SECOND, 20); 

    int hour = localTime.get(Calendar.HOUR); 
    int minute = localTime.get(Calendar.MINUTE); 
    int second = localTime.get(Calendar.SECOND); 


    // Print the local time 

    System.out.printf("Local time : %02d:%02d:%02d\n", hour, minute, second); 


    // Create a calendar object for representing a Germany time zone. Then we 
    // wet the time of the calendar with the value of the local time 

    Calendar germanyTime = new GregorianCalendar(TimeZone.getTimeZone("Germany")); 
    germanyTime.setTimeInMillis(localTime.getTimeInMillis()); 
    hour = germanyTime.get(Calendar.HOUR); 
    minute = germanyTime.get(Calendar.MINUTE); 
    second = germanyTime.get(Calendar.SECOND); 


    // Print the local time in Germany time zone 

    System.out.printf("Germany time: %02d:%02d:%02d\n", hour, minute, second); 
} 
} 
1

有同樣的麻煩,但找到了一條出路。

TimeZone默認設置爲設備的時區。要更改此設置並將其設置爲特定時區,請使用getRawOffset()屬性。
此方法計算當前時間的毫秒數。因此,您可以爲指定的timeZone添加毫秒,並將其減去默認的timeZone。

當我試圖改變它由於時區 'GMT_ID'

values.put(CalendarContract.Events.DTSTART, startDate.getTime() +TimeZone.getTimeZone(GMT_ID).getRawOffset() -TimeZone.getDefault().getRawOffset()); 

希望這有助於。

相關問題