小编Gui*_*íez的帖子

将带有 zoneId 的字符串本地日期转换为 UTC Offsetdate JAVA

我正在尝试将巴西本地日期转换为 UTC 格式。我已经开发了我的解决方案,但我相信它可以改进。我一直在寻找其他问题,但没有成功。

我的问题是,当我使用以下方法处理Date对象时:

Instant endDateTime = questionDate.toInstant();
Run Code Online (Sandbox Code Playgroud)

我收到一个 UTC 日期,"2017-11-16T00:00:00Z"但这应该是巴西本地日期(不正确,因为它有尾随"Z"),当我尝试转换为 UTC 时,我收到相同的输出。

另一方面,如果我使用ZoneDateTimeclass 并使用LocalDateTimeobject构建日期,我会在输出中丢失秒数:"2017-11-16T02:00Z". 当我使用时会发生这种情况:

LocalTime.of(hour, minutes, seconds);
Run Code Online (Sandbox Code Playgroud)

我搜索LocalTime课堂,我认为这是因为分钟或秒,0但我不确定。

解决方案的问题:

  1. 响应没有秒
  2. 我希望 Java 8 有一组功能可以让这更简单明了

前提:

  • 我不能使用 Joda 库
  • 结果必须是OffsetDateTime类
  • 输入:日期 "2017-11-16"
  • 输出: "2017-11-16T02:00:00Z"

这是我的解决方案:

private static OffsetDateTime processDate(Date questionDate) {
  Instant endDateTime = questionDate.toInstant();
  ZoneId zoneId = ZoneId.of(ZONEID);
  String [] date = endDateTime.toString().split("T");
  LocalDateTime localDateTime = convertLocalTimeToUtc(date);
  ZonedDateTime zonedDateTime = …
Run Code Online (Sandbox Code Playgroud)

java date utc java-8 java-time

2
推荐指数
1
解决办法
3299
查看次数

标签 统计

date ×1

java ×1

java-8 ×1

java-time ×1

utc ×1