1

可能重复:
时区转换

我必须使用 Java 代码将给定的时间和时区与其他时区转换。

例如 :

我还必须28 Sept 2:00 PM IST考虑 DST(夏令时)在加拿大时区进行转换。

有人能帮我吗?

4

5 回答 5

1

尝试getTimeZone()setTimeZone()Calendar班级一起

TimeZone oztz = TimeZone.getTimeZone("Canada/Atlantic");
Calendar datetime = Calendar.getInstance( oztz );

请参阅此链接了解所有时区:

http://snipplr.com/view/23131/timezone-enum/

于 2012-09-28T08:26:59.993 回答
0

Calendar类内置了用于进行转换的方法。

您可以使用setTimeZone设置所需的时区。

另请参阅 Date 类中的getTimeZoneOffset

于 2012-09-28T08:26:51.010 回答
0

可能您正在寻找这样的东西: Converting Times Between Time Zones

于 2012-09-28T08:30:07.060 回答
0

您可以使用JodaTime及其对不同时区的支持。

也就是说,如果您知道您有字符串 ISO 格式或特定的已知格式(看起来像),您可以执行以下操作:

DateTimeFormatter fmt = ISODateTimeFormat.dateTime().withZone("Asia/Kolkata");
DateTime newDate = fmt.parseDateTime([your input date]);
// You can manipulate your date here...
String newString = fmt.withZone("Canada/Atlantic").print();

这在内部处理所有时区事务,包括 DST。

于 2012-09-28T08:38:54.063 回答
0

简单的方法是将 Datetime 和 Timezone 设置为 Calender 和 getTime。下面是设置时区和用户特定时间的示例代码。

Date date =new Date(2012,9,28,2,00,00); //Set time to Date
        Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("Canada/Atlantic"));
        calendar.setTime(date);

        System.out.println("Timezone :: " + calendar.getTimeZone());
        System.out.println("Time :: " + calendar.getTime());

输出:

 Timezone :: sun.util.calendar.ZoneInfo[id="Canada/Atlantic",offset=-14400000,dstSavings=3600000,useDaylight=true,transitions=228,lastRule=java.util.SimpleTimeZone[id=Canada/Atlantic,offset=-14400000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=3,startDay=1,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]]
    Time :: Mon Oct 28 02:00:00 GMT 3912

您将从 TimeZone useDaylight(true/false)、dstSaving(加拿大 1 小时) 获取所有信息 有关 TimeZone 的更多功能,请参阅以下链接: http ://biese.wordpress.com/2006/10/23/java-daylight -节省时间和时区/

这是获取 DayLightSavingTime 信息的链接: http ://timeanddate.com/worldclock/clockchange.html?n=1187&year=2012

于 2012-09-28T09:59:59.017 回答