Java时区转换:需要帮助

Java时区转换:需要帮助,java,timezone,Java,Timezone,可能重复: 我必须使用Java代码将给定的时间和时区转换为其他时区 例如: 我必须转换加拿大时区的9月28日下午2:00 IST,同时考虑DST(日光节约时间) 有人能帮我吗?该类内置了用于进行转换的方法 您可以使用设置所需的时区 另请参见Date类中的。该类具有用于执行转换的内置方法 您可以使用设置所需的时区 另请参见Date类中的。尝试getTimeZone()和setTimeZone()以及日历类 TimeZone oztz = TimeZone.getTimeZone("Canada/

可能重复:

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

例如:

我必须转换加拿大时区的9月28日下午2:00 IST,同时考虑DST(日光节约时间)

有人能帮我吗?

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

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

另请参见Date类中的。该类具有用于执行转换的内置方法

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

另请参见Date类中的。

尝试
getTimeZone()
setTimeZone()
以及
日历

TimeZone oztz = TimeZone.getTimeZone("Canada/Atlantic");
Calendar datetime = Calendar.getInstance( oztz );
查看所有时区的链接:

尝试
getTimeZone()
setTimeZone()
以及
Calendar

TimeZone oztz = TimeZone.getTimeZone("Canada/Atlantic");
Calendar datetime = Calendar.getInstance( oztz );
查看所有时区的链接:


您可能正在寻找这样的产品:

您可能正在寻找这样的产品:

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

也就是说,如果您知道您有字符串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。

您可以使用它并支持不同的时区

也就是说,如果您知道您有字符串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。

简单的方法是将Datetime和时区设置为Calendar和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
您将从时区useDaylight(真/假)、dstSaving(加拿大为1小时)获取所有信息 有关时区的更多功能,请参阅以下链接:

以下是获取DayLightSavingTime信息的链接:
简单的方法是将Datetime和时区设置为Calendar和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
您将从时区useDaylight(真/假)、dstSaving(加拿大为1小时)获取所有信息 有关时区的更多功能,请参阅以下链接:

以下是获取DayLightSavingTime信息的链接:

检查这个检查这个