有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

date Java 8–使用时区从LocalDateTime创建即时

我在数据库中以字符串格式ddMMyyyy和hh:mm存储了一个日期和时区。 我想根据这些信息创建一个瞬间,但我不知道怎么做

差不多

LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 1, 13, 39);
Instant instant = dateTime.toInstant(TimeZone.getTimeZone("ECT"));

共 (3) 个答案

  1. # 1 楼答案

    您可以先创建一个带有该时区的ZonedDateTime,然后调用toInstant

    LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 15, 13, 39);
    Instant instant = dateTime.atZone(ZoneId.of("Europe/Paris")).toInstant();
    System.out.println(instant); // 2017-06-15T11:39:00Z
    

    我也改用了完整的时区名称(按照巴兹尔的建议),因为它不那么模棱两可

  2. # 2 楼答案

    忘记过去的时区课程吧。使用ZoneId,因为它是线程安全的,您可以使用最后一个静态字段来存储区域

    LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 1, 13, 39);
    ZonedDateTime.of(dateTime, ZoneId.of("ECT")).toInstant();
    
  3. # 3 楼答案

    我认为以下代码应该有效:

    LocalDateTime time = LocalDateTime.of(2017, Month.JUNE, 15, 13, 39);
    ZonedDateTime.of(time, TimeZone.getTimeZone("ZONE").toZoneId()).toInstant();
    

    你只需要用你需要的时区替换“ZONE”