Перевод строки дата-время в секунды эпохи Юникс
31.03.2019, 16:06
/**
 * перевод строки дата-время в секунды эпохи Unix-epoch, если указана только дата, то время считается 00:00:00
 * @param sdat дата в виде YYYY-MM-DD[ hh:mm[:ss]] или DD.MM.YYYY[ hh:mm[:ss]]
 * @return секунды
 */
private static long datetime2unix(String sdat)
{
 long t;
 String str;
 DateTimeFormatter dtf;
 if(sdat.matches("\\d+-\\d+-\\d+.*"))
 dtf = dateFmt1; // дата вида YYYY-MM-DD
 else
 dtf = dateFmt2; // дата вида DD.MM.YYYY
 // указана только дата ?
 if(sdat.matches("\\d+[-.]\\d+[-.]\\d+$")) {
 str = sdat + " 00:00:00"; // добавим время
 } else {
 if(sdat.matches("\\d+:\\d+:\\d+$"))
 str = sdat; // дата указана со временем
 else
 str = sdat + ":00"; // допишем секунды ко времени если их нет
 }
 try {
 // DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 LocalDateTime dt = LocalDateTime.parse(str, dtf);
 // @see https://stackoverflow.com/questions/41427384/how-to-get-default-zoneoffset-in-java8
 // ZoneOffset zoneOffset = OffsetDateTime.now(ZoneId.systemDefault()).getOffset ();
 t = dt.toEpochSecond(zoneOffset);
 } catch(Exception e) {
 System.out.println("?-Error datetime2unix(" + str + "): " + e.getMessage());
 return 0;
 }
 return t;
}
Категория: исходный код | Добавил: ae999
Просмотров: 304 | Загрузок: 0