2012-09-17 137 views
1

我使用靛藍服務發佈2.我已經寫了下面的代碼:如何在不同的時區獲取日期和時間?

TimeZone calcutta = TimeZone.getTimeZone("Asia/Calcutta"); 
Date now = new Date(); 
DateFormat format = 
    DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); 
format.setTimeZone(calcutta); 
jlabel_IndiaTime.setText((format.format(now).toString())); 

是表示Monday, September 17,2012 1:13:23 PM IST,但在印度的時間是上午10點14分。我正在嘗試從紐約來。任何人都可以幫我嗎?

+0

@Nikhil Agrawal:不是C#。我正在用JAVA編寫代碼。 – sattu

+1

當你打印'Timezone.getDefault()'時,你會得到什麼? –

+0

你的代碼從命令行工作(我的默認時區是「America/Denver」)。我把它作爲一個eclipse的bug。 –

回答

0

下面是一些示例代碼。我明確地將我的服務器的默認時區設置爲紐約時間,但您可能要遵循Jon Lin的提示並確定您自己的服務器的默認時區。例如,如果您在紐約,但正在使用託管在SF中的服務器並使用太平洋時間,那麼這可能與任何區域中的預期時間相差3小時。

public void testTodayInIndia() { 
    // For demonstration, make my system act as though it's in New York 
    TimeZone.setDefault(TimeZone.getTimeZone("America/New_York")); 
    long oneDay = 86400000; 
    long fourYears = (365 * 4 + 1) * oneDay; 
    // Calculate 42 years after 1/1/1970 UTC 
    Date now = new Date(fourYears * 10 + oneDay * 365 * 2 + 1); 
    TimeZone calcutta = TimeZone.getTimeZone("Asia/Kolkata"); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    // Since unspecified, this output will show the date and time in New York 
    assertEquals("2011-12-31 19:00:00", formatter.format(now)); 
    // After setting the formatter's time zone, output reflects the same instant in Calcutta. 
    formatter.setTimeZone(calcutta); 
    assertEquals("2012-01-01 05:30:00", formatter.format(now)); 
} 
0

可以使用的SimpleDateFormat和Date類,如下圖所示:

Date date = new Date(); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
    System.out.println(simpleDateFormat.format(date)); 

有不同的時區,你可以使用「美國/紐約」這樣的「亞洲/加爾各答」取代。

相關問題