gpt4 book ai didi

java - JODA api 在时区之间转换日期

转载 作者:行者123 更新时间:2023-12-02 05:52:49 25 4
gpt4 key购买 nike

我想将日期从一个时区转换为另一个时区。 java.util.Date 已经遇到问题了,因此按照人们的建议尝试使用 JODA-

    import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;


public class JodaTimeTest {
public static void main(String[] args) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd-MMM-yy hh:mm:ss a");
System.out.println(getDateStringToShow(formatter.parse("26-Nov-10 03:31:20 PM +0530"), "Asia/Calcutta", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("02-Oct-10 10:00:00 AM +0530"), "Asia/Calcutta", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("26-Nov-10 11:51:20 PM +0530"), "Asia/Kolkata", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("02-Oct-10 01:01:00 AM +0530"), "Asia/Kolkata", "Europe/Dublin", false));
}

public static String getDateStringToShow(Date date, String sourceTimeZoneId, String targetTimeZoneId, boolean includeTime) {
DateTime dateRes = new DateTime(date);

DateTime nowIndia = dateRes.toDateTime(DateTimeZone.forID(sourceTimeZoneId));
DateTime nowDub = nowIndia.toDateTime(DateTimeZone.forID(targetTimeZoneId));

DateTimeFormatter fmt = DateTimeFormat.forPattern("dd-MMM-yy z");
System.out.println("nowIndia : " + fmt.print(nowIndia));
System.out.println("nowDub : " + fmt.print(nowDub));
return "---next---";
}
}

运行时-

    nowIndia : 26-Nov-10 IST
nowDub : 26-Nov-10 GMT
---next---

nowIndia : 02-Oct-10 IST
nowDub : 02-Oct-10 IST
---next---

nowIndia : 26-Nov-10 IST
nowDub : 26-Nov-10 GMT
---next---

nowIndia : 02-Oct-10 IST
nowDub : 01-Oct-10 IST
---next---

任何人都可以告诉我为什么它显示日期为 IST - 02-Oct-10 10:00:00 AM +0530

最佳答案

与许多时区缩写一样,“IST” 并不唯一。它可以代表以下任何一个:

  • 印度标准时间 (UTC+05:30)
  • 以色列标准时间 (UTC+02:00)
  • 爱尔兰标准时间 (UTC+01:00)

Europe/Dublin 是爱尔兰的时区 ID。与英国一样,它在冬季使用“格林威治标准时间”这一名称。但在夏天,当英国切换为“英国夏令时间”时,爱尔兰切换为“爱尔兰标准时间”。

尽管名称中有“标准”一词,但它是该时区的日间名称。如果您看到“爱尔兰夏令时间”,那就是错误的。

2010 年,欧洲/都柏林 采用爱尔兰标准时间 from March 28 through October 31 ,这解释了为什么您看到 IST 为 01-Oct-10,而 GMT 为 26-Nov-10。

另一方面,印度全年遵循印度标准时间,因此 IST 始终适用。

有关更多详细信息,请参阅:

关于java - JODA api 在时区之间转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com