如何在没有时区偏移的情况下将日期转换为毫秒?

How to convert date to milliseconds with out timezone offset?

我如何将所选日期转换为没有时区差异的毫秒数。 下面是我的代码。

 String selectedDate=Jan 18, 2020;
 SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy", Locale.US);
 Date date = format.parse(selectedDate);

而 运行 我正在约会 1 月 18 日星期六 00:00:00 GMT+05:30 2020。但我希望没有时差,例如 2020 年 1 月 18 日。

对于与 UTC 相差 0 的情况:

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MMM dd, uuuu", Locale.ENGLISH);
    String selectedDate = "Jan 18, 2020";
    ZonedDateTime zdt = LocalDate.parse(selectedDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC);
    System.out.println(zdt);
    long millisSinceEpoch = zdt.toInstant().toEpochMilli();
    System.out.println(millisSinceEpoch);

此 snpipet 的输出是:

2020-01-18T00:00Z
1579305600000

我正在使用 java.time,现代 Java 日期和时间 API。您使用的 类、SimpleDateFormatDate 设计不佳且已过时,不应再有人使用它们。

问题:java.time 不需要 Android API 26 级吗?

java.time 在新旧 Android 设备上都能很好地工作。它只需要至少 Java 6.

  • 在 Java 8 和更新的 Android 设备上(从 API 级别 26)内置了现代 API。
  • 在非 Android Java 6 和 7 中获得 ThreeTen Backport,现代 类 的 backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 类。

链接