Java の エポック秒とエポックミリ秒、特にエポックミリ秒は、System.currentTimeMillis() で取得するのが、
いいのか?Instant の toEpochMilli() を使うべきなのか?
未だにわからない。
エポック秒
long epocsec = Instant.now().getEpochSecond();
LocalDateTime nowtime = Instant.ofEpochSecond(epocsec).atZone(ZoneId.systemDefault()).toLocalDateTime();
OR
LocalDateTime nowtime
= LocalDateTime.ofEpochSecond(epocsec, 0, ZoneId.systemDefault().getRules().getOffset(Instant.now()));
エポックミリ秒
long epocmili = System.currentTimeMillis();
long epocmili = Instant.now().toEpochMilli();
LocalDateTime nowtime = Instant.ofEpochMilli(epocmili).atZone(ZoneId.systemDefault()).toLocalDateTime();
OR
LocalDateTime nowtime = LocalDateTime.ofInstant(Instant.ofEpochMilli(epocmili), ZoneId.systemDefault());
LocalDateTime ⇒ エポック秒
long l = LocalDateTime.now().atZone(ZoneId.systemDefault()).toEpochSecond();
LocalDateTime ⇒ エポックミリ秒
long l = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
=====================================
Python
from datetime import datetime import time # 現在エポック秒 epoch = int(time.mktime(datetime.now().timetuple())) print(epoch) # エポック秒 → datetime dtime = datetime(*time.localtime(epoch)[:6]) print(dtime) # もしくは、datetime.fromtimestamp(int) を使って dtime = atetime.fromtimestamp(dtime) # 現在エポックミリ秒 epocmili = int(datetime.now().timestamp() * 1000) print(epocmili) # もしくは、int(time.time() * 1000) # 時刻文字列→ エポック秒 dt = datetime.strptime(string, '%Y-%m-%d %H:%M:%S') epoch = int(time.mktime(dt.timetuple()))