如何以给定格式获取日期?

bob*_*bob 1 java java-8

这是我想要做的:

  1. 取今天的日期(比如 2021-07-07)
  2. 将其格式化为 (2021-07-07T00:00:00.000Z)
  3. 在 API 中发送

我找不到一种简单的方法来转换2021-07-072021-07-07T00:00:00.000Z. 我们当然可以附加T00:00:00.000Z字符串,但我想避免这种情况。

到目前为止,我拥有的每种方法(使用 LocalDate、LocalDateTime、Instant、Date)都涉及使用时区 (ZoneId) 或转​​换为 Epoch,它们最终只给出响应直到几秒钟而不是几毫秒。

我相信一定有更简单的方法。

编辑 1:传递区域 ID 不是问题,我们可以做到。

Arv*_*ash 12

你需要

LocalDate.now()
    .atStartOfDay(ZoneOffset.UTC)
    .format(DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH))
Run Code Online (Sandbox Code Playgroud)

演示:

import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        System.out.println(
            LocalDate.now()
                .atStartOfDay(ZoneOffset.UTC)
                .format(DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH))
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

ONLINE DEMO

Trail: Date Time 中了解有关现代日期时间 API 的更多信息。