package com.farriver.bwf.common.utilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; public class DateTimeUtils { private static final Logger logger = LoggerFactory.getLogger(DateTimeUtils.class); public static Date parseDate(String dateStr, DateFormat dateFormat) { Date date = null; try { date = dateFormat.parse(dateStr); } catch (Exception e) { } return date; } public static String dateToString(Date date, String dateFormat) { String dateStr = null; try { SimpleDateFormat format = new SimpleDateFormat(dateFormat); dateStr = format.format(date); } catch (Exception e) { } return dateStr; } public static Date parseDate(String dateStr, String dateFormat) { Date date = null; try { SimpleDateFormat format = new SimpleDateFormat(dateFormat); date = format.parse(dateStr); } catch (Exception e) { } return date; } public static Map getWorkDayDuration(Date date) { Map map = new HashMap<>(); Date from = null; Date to = null; try { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 8); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); from = calendar.getTime(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 17); calendar.set(Calendar.MINUTE, 00); calendar.set(Calendar.SECOND, 00); calendar.set(Calendar.MILLISECOND, 999); to = calendar.getTime(); } catch (Exception e) { logger.error(e.getMessage(), e); } map.put("from", from); map.put("to", to); return map; } public static Map getDayDuration(Date date) { Map map = new HashMap<>(); Date from = null; Date to = null; try { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); from = calendar.getTime(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); to = calendar.getTime(); } catch (Exception e) { } map.put("from", from); map.put("to", to); return map; } public static Map getMonthDuration(Date date) { Map map = new HashMap<>(); Date from = null; Date to = null; try { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month); c.set(Calendar.DAY_OF_MONTH, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); from = c.getTime(); Calendar c2 = Calendar.getInstance(); c2.set(Calendar.YEAR, year); c2.set(Calendar.MONTH, month); int lastDate = c2.getActualMaximum(Calendar.DATE); c2.set(Calendar.DAY_OF_MONTH, lastDate); c2.set(Calendar.HOUR_OF_DAY, 23); c2.set(Calendar.MINUTE, 59); c2.set(Calendar.SECOND, 59); c2.set(Calendar.MILLISECOND, 999); to = c2.getTime(); } catch (Exception e) { } map.put("from", from); map.put("to", to); return map; } public static Map getYearDuration(Date date) { Map map = new HashMap<>(); Date from = null; Date to = null; try { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); Calendar c = Calendar.getInstance(); c.set(year, 0, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); from = c.getTime(); Calendar c2 = Calendar.getInstance(); c2.set(Calendar.YEAR, year + 1); c2.set(Calendar.MONTH, 0); c2.set(Calendar.DAY_OF_MONTH, 0); c2.set(Calendar.DATE, 0); c2.set(Calendar.HOUR_OF_DAY, 23); c2.set(Calendar.MINUTE, 59); c2.set(Calendar.SECOND, 59); c2.set(Calendar.MILLISECOND, 999); to = c2.getTime(); } catch (Exception e) { } map.put("from", from); map.put("to", to); return map; } public static Integer getRemainingDay(Date from, Date to) { if (from == null || to == null) { return null; } try { var duration = to.getTime() - from.getTime(); return (int) Math.ceil((double) duration / 24 / 60 / 60 / 1000); } catch (Exception ignored) { } return null; } }