将 UTC 时间解析为 CET/CEST

我从 DB 获取的数据采用 UTC 时间。我需要将其转换为 CET/CEST。我正在使用下面的代码。我不确定 CET 和 CEST 是否都会得到照顾。请让我知道它是否需要 CET 和 CEST ?

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
        return LocalDateTime.parse(ptu, formatter)
            .atOffset(ZoneOffset.UTC)
            .atZoneSameInstant(ZoneId.of("Europe/Amsterdam"))
            .format(formatter);


HUH函数
浏览 160回答 3
3回答

一只萌萌小番薯

请参考以下片段:            ZonedDateTime dateTime =null;            Date finalDate = null;            DateTimeFormatter format =null;            String date = yourdate;            LocalDateTime lid = LocalDateTime.parse(date,             DateTimeFormatter.ofPattern(""yyyy-MM-dd"));            ZoneId id = ZoneId.of("GMT");//Add yours            ZonedDateTime gmtZonedDateTime = lid.atZone(id);            ZoneId zoneId = ZoneId.of("America/Los_Angeles"); //in case your add your            dateTime = gmtZonedDateTime.withZoneSameInstant(id);            format = DateTimeFormatter.ofPattern("yyyy-MM-dd");            SimpleDateFormat sfmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            finalDate = sfmt.parse(format.format(dateTime));

慕哥6287543

CET 和 CEST 并不总是相同,因此您不能保证一个结果满足两个时区。考虑使用OffsetDateTime作为您的示例现在打印时间,在“CET”中很简单:OffsetDateTime odt = OffsetDateTime.now();System.out.println(odt); // 2018-10-26T11:25:49.215+01:00System.out.println(odt.atZoneSameInstant(ZoneId.of("CET"))); // 2018-10-26T12:25:49.215+02:00[CET]但是,我不相信ZoneID课堂上有“CEST” 。因此,您可以打印您知道处于 CEST 的特定国家/地区的时间并进行比较。例如,阿尔及尔目前在 CET,而阿姆斯特丹在 CEST:System.out.println(odt.atZoneSameInstant(ZoneId.of("Europe/Amsterdam")));System.out.println(odt.atZoneSameInstant(ZoneId.of("Africa/Algiers")));输出:2018-10-26T12:42:29.897+02:00[欧洲/阿姆斯特丹]2018-10-26T11:42:29.897+01:00[非洲/阿尔及尔]

哈士奇WWW

您应该使用的类是ZonedDateTime;因为它具有完整的时区支持(包括夏令时)。您的代码应替换为:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");ZonedDateTime utcTime = LocalDateTime.parse(ptu,formatter).atZone(ZoneId.of("UTC"));ZonedDateTime yourTime = utcTime.withZoneSameLocal(ZoneId.of("Europe/Amsterdam"));return yourTime.format(formatter); 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java