我如何获得日期和时间在不同时区的时间?

时间:2012-09-17 04:47:02

标签: java time timezone

我正在使用Indigo Service Release 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 AM。我是从纽约尝试这个。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

您可以使用SimpleDateFormat和Date类,如下所示:

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

您可以使用“America / New_York”替换不同的时区,例如“Asia / Calcutta”。