我们收到的时间为小时 = 11,分钟 = 29,秒 = 54,毫秒 = 999 以及时区信息。
如何将此时间转换为没有日期部分的 unix 纪元毫秒。我试过这段代码:
ZoneId zoneId = ZoneId.of("America/New_York");
LocalDate now = LocalDate.now(zoneId);
long epochMilli = ZonedDateTime.of(LocalDate.now(zoneId).atTime(11, 29, 20, 999 * 1000 * 1000), zoneId).toInstant().toEpochMilli();
long unixEpocSeconds = epochMilli % (24 * 60 * 60 * 1000); //86400000
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
calendar.setTimeInMillis(unixEpocSeconds);
System.out.println("( = " + (calendar.get(Calendar.HOUR)==11));
System.out.println("( = " + (calendar.get(Calendar.MINUTE)==29));
System.out.println("( = " + (calendar.get(Calendar.SECOND)==20));
System.out.println("( = " + (calendar.get(Calendar.MILLISECOND)==999));
如何在没有日期组件的情况下获取 unix 纪元秒数,即如何获取 UTC 区域 / 而不是给定 zoneid 中的毫秒数。上面的代码运行 find if zoneId=UTC