当前位置: 首页 > 工具软件 > PDT > 使用案例 >

java8 utc时间转换_Java使用Java 8时间库将UTC转换为PDT / PST

薛阳荣
2023-12-01

我想使用内置的Java 8时间库将UTC转换为PST / PDT.

我正在编写一个与API对话的程序,该API根据时间范围返回对象列表.例如.从特定日期时间创建/修改的对象.

我的程序使用LocalDateTime,值始终为UTC.

API接受PST / PDT.

“所有API响应中表示的时区都是PST / PDT.同样,CompanyName要求您进行所有时区转换并在PST / PDT中提交任何dateTime请求.” – 引用API文档

我认为它们对PST / PDT的意思是时间值应该反映它是否在白天节省.

例如.时间值每年变化两次.

如果是这种情况,是否有实用/传统的方式将UTC转换为PST / PDT,而无需通过查看确切日期手动确定是否在白天节省时间?

UPDATE

API以JSON格式返回对象.

我的应用程序通过查询参数api.com/objects?modified-date=${yyyy-MM-dd hh:mm:ss}向其API发送请求

我目前正在使用以下方法进行转换:

public static String toSsTimeStr(LocalDateTime utcTime){

String pattern = "yyyy-MM-dd HH:mm:ss";

ZonedDateTime zdt = ZonedDateTime.ofInstant(utcTime, ZoneOffset.UTC, ZoneId.of("America/Los_Angeles"));

String timeStr = zdt.format(DateTimeFormatter.ofPattern(pattern));

return timeStr;

}

这有助于调整白天节省时间,换句话说,根据当前的白天节省时间状态返回正确的值吗?

谢谢.

解决方法:

My program uses LocalDateTime and the value is always in UTC.

LocalDateTime根本没有时区,因此它不是UTC.

在UTC中,请使用Instant类.这表示时间线上的时刻,分辨率高达纳秒.

Instant now = Instant.now();

要调整到时区,请应用ZoneId以获取ZonedDateTime.

切勿使用像PST& amp; PDT在主流媒体中如此常见.它们不是实时区域,不是标准化的,甚至不是唯一的(!).在大陆/地区格式中使用proper time zone names.

ZoneId zoneId = ZoneId.of( "America/Los_Angeles" );

ZonedDateTime zdt = instant.atZone( zoneId );

听起来你的数据接收器的设计很糟糕,输入一个字符串,表示假设在America / Los_Angeles时区的日期时间值,但没有任何指示符(没有偏离UTC,没有时区).

要获得这样的字符串,缺少任何偏移量或区域,请使用名为ISO_LOCAL_DATE_TIME的预定义DateTimeFormatter.您将获得标准ISO 8601格式的字符串,如下所示:2011-12-03T10:15:30.

String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME );

您的数据接收器会从中间省略T,因此请使用SPACE替换.

output = output.replace( `T` , " " );

如果数据接收器只需要整秒,则可以从日期时间值中截断任何小数秒.

zdt = zdt.truncatedTo( ChronoUnit.SECONDS );

从字符串到另一个方向,定义格式化程序,解析为LocalDateTime并应用假定的时区.

String input = "2011-12-03 10:15:30";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss" );

LocalDateTime ldt = LocalDateTime.parse( input , formatter );

ZoneId zoneId = ZoneId.of( "America/Los_Angeles" );

ZonedDateTime zdt = ldt.atZone( zoneId );

标签:java,time,spring,java-8

来源: https://codeday.me/bug/20190611/1219285.html

 类似资料: