我們接收時間爲小時= 11,分鐘= 29,秒= 54,毫秒= 999以及時區信息。將給定區域的LocalTime轉換爲unix中沒有日期分量的時間秒
如何將此時間轉換爲無日期部分的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紀元秒無日期組件i.e.how獲得UTC中區毫秒/而不是給予了zoneid。上面的代碼運行發現,如果了zoneid = UTC
你不能。 unix時代的秒數是*「自unix時代以來的秒數(即1970-01-01T00:00Z')」*。如果你有時間,沒有日期,你怎麼可能計算出來? – 2017-09-26 15:43:46
另一個細節:'toEpochMilli()'返回自unix時期以來的毫秒**數(獲得秒數,而不是調用'getEpochSecond()')。爲了建立一個'ZonedDateTime',你也可以做'ZonedDateTime.of(LocalDate.now(zoneId).atTime(11,29,20,999 * 1000 * 1000),zoneId)' - 比調用'getYear ()','getMonthValue()'等等。 – 2017-09-26 15:48:05
@Hugo謝謝。沒有日期日期,我們無法獲得紀元毫秒。是否有可能獲得午夜UTC時間之後的miliseonds? – RGoyal