是否有任何 API 可用于不同时区之间的日期时间转换,类似于谷歌地图的时区 api。
不同时区之间日期时间转换的说明 -
给定基本时区、基本时区中的日期时间和目标时区,一个返回目标时区中日期时间的 API。(这也考虑了像 dst 这样的概念)
编辑 1 -
根据收到的关于这个问题的负面评论,必须提供更多细节来说明这个问题的需要以及已经用不同方法浪费的努力。
还有这个问题,我希望了解一些在线可用的 api,这些 api 可能会一直受到影响,而不是依赖于 java8 提供的 ZonedDateTime 之类的库。
Java 8 的 ZonedDateTime 的一些问题-
请参阅下面的scala代码 -
import java.time.{LocalDateTime, ZoneId, ZoneOffset, ZonedDateTime}
import java.time.format.DateTimeFormatter
val istanbul: ZoneId = ZoneId.of("Europe/Istanbul");
val str: String = "2017-03-29 17:00:00";
val str1: String = "2017-03-24 17:00:00";
val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
val localtDateAndTime: LocalDateTime = LocalDateTime.parse(str, formatter);
val localtDateAndTime1: LocalDateTime = LocalDateTime.parse(str1, formatter);
val dateAndTimeInIstanbul: ZonedDateTime = ZonedDateTime.of(localtDateAndTime, istanbul );
val dateAndTimeInIstanbul1: ZonedDateTime = ZonedDateTime.of(localtDateAndTime1, istanbul );
val utcDate: ZonedDateTime = dateAndTimeInIstanbul.withZoneSameInstant(ZoneOffset.UTC);
val utcDate1: ZonedDateTime = dateAndTimeInIstanbul1.withZoneSameInstant(ZoneOffset.UTC);
System.out.println("Original date and time in a particular timezone : " + dateAndTimeInIstanbul);
System.out.println("Converted date and time in UTC : " + utcDate);
System.out.println("Origianl date and time in a particular timezone : " + dateAndTimeInIstanbul1);
System.out.println("Converted date and time in UTC : " + utcDate1);
上述代码生成的输出是 -
```
Original date and time in a particular timezone : 2017-03-29T17:00+03:00[Europe/Istanbul]
Converted date and time in UTC : 2017-03-29T14:00Z
Origianl date and time in a particular timezone : 2017-03-24T17:00+02:00[Europe/Istanbul]
Converted date and time in UTC : 2017-03-24T15:00Z
```
现在的问题是,从 2017 年到 2020 年,伊斯坦布尔将不会考虑任何 dst,这在 ZonedDateTime 库中似乎没有考虑。
所以想知道一些其他的替代品。最好是基于 Web 的 API。