Перевод строки дата-время в секунды эпохи Юникс
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; } | |
Категория: исходный код | | |
Просмотров: 304 | Загрузок: 0 |