/** * LocalDateTime工具类 * * @author Code13 * @date 2019-11-10 21:10 */ public final class LocalDateTimeUtil { /** * @param beginTime 开始时间 * @param endTime 结束时间 * @return true在时间段内,false不在时间段内 */ public static boolean isBetween(LocalDateTime beginTime, LocalDateTime endTime) { LocalDateTime now = LocalDateTime.now(); boolean flag = false; if (now.isAfter(beginTime) && now.isBefore(endTime)) { flag = true; } return flag; } //获取当前时间的LocalDateTime对象 //LocalDateTime.now(); //根据年月日构建LocalDateTime //LocalDateTime.of(); //比较日期先后 //LocalDateTime.now().isBefore(), //LocalDateTime.now().isAfter(), /** * Date转换为LocalDateTime * * @param date Date * @return java.time.LocalDateTime */ public static LocalDateTime convertDateToLDT(Date date) { return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); } /** * LocalDateTime转换为Date * * @param time LocalDateTime * @return java.util.Date */ public static Date convertLDTToDate(LocalDateTime time) { return Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); } /** * 获取指定日期的毫秒 * * @param time LocalDateTime * @return java.lang.Long */ public static Long getMilliByTime(LocalDateTime time) { return time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); } /** * 获取指定日期的秒 * * @param time LocalDateTime * @return java.lang.Long */ public static Long getSecondsByTime(LocalDateTime time) { return time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond(); } /** * 获取指定时间的指定格式 * * @param time LocalDateTime * @param pattern 字符串格式 * @return java.lang.String */ public static String formatTime(LocalDateTime time, String pattern) { return time.format(DateTimeFormatter.ofPattern(pattern)); } /** * 获取指定日期的指定格式 * * @param date LocalDate * @param pattern 字符串格式 * @return java.lang.String */ public static String formatDate(LocalDate date, String pattern) { return date.format(DateTimeFormatter.ofPattern(pattern)); } /** * 获取"yyyy-MM-dd hh:mm:ss"格式的当前日期 * * @return {@link String} */ public static String formatNow() { return formatTime(LocalDateTime.now(), DatePattern.NORM_DATETIME_PATTERN); } /** * 获取当前时间的指定格式 * * @param pattern 格式 * @return java.lang.String */ public static String formatNow(String pattern) { return formatTime(LocalDateTime.now(), pattern); } /** * 日期加上一个数,根据field不同加不同值,field为ChronoUnit.* * * @param time LocalDateTime * @param number 值 * @param field TemporalUnit * @return java.time.LocalDateTime */ public static LocalDateTime plus(LocalDateTime time, long number, TemporalUnit field) { return time.plus(number, field); } /** * 日期减去一个数,根据field不同减不同值,field参数为ChronoUnit.* * * @param time LocalDateTime * @param number 值 * @param field TemporalUnit * @return java.time.LocalDateTime */ public static LocalDateTime minu(LocalDateTime time, long number, TemporalUnit field) { return time.minus(number, field); } /** * 获取两个日期的差 field参数为ChronoUnit.* * * @param startTime 开始时间 * @param endTime 结束时间 * @param field 单位(年月日时分秒) */ public static long betweenTwoTime(LocalDateTime startTime, LocalDateTime endTime, ChronoUnit field) { Period period = Period.between(LocalDate.from(startTime), LocalDate.from(endTime)); if (field == ChronoUnit.YEARS) { return period.getYears(); } if (field == ChronoUnit.MONTHS) { return period.getYears() * 12 + period.getMonths(); } return field.between(startTime, endTime); } /** * 获取一天的开始时间,2017,7,22 00:00 * * @param time LocalDateTime * @return java.time.LocalDateTime */ public static LocalDateTime getDayStart(LocalDateTime time) { return time.withHour(0) .withMinute(0) .withSecond(0) .withNano(0); } /** * 获取一天的结束时间,2017,7,22 23:59:59.999999999 * * @param time LocalDateTime * @return java.time.LocalDateTime */ public static LocalDateTime getDayEnd(LocalDateTime time) { return time.withHour(23) .withMinute(59) .withSecond(59) .withNano(999999999); } /** * 将集合中的LocalDateTime格式化 * * @param localDateList 列表 * @param pattern 格式 * @return java.util.List<java.lang.String> */ public static List<String> formatDateList(List<LocalDate> localDateList, String pattern) { return localDateList.parallelStream() .map(localDate -> formatDate(localDate, pattern)) .collect(Collectors.toList()); } /** * 获取从给定的date起指定天数前的LocalDate列表 * 并按照时间正序排列 * * @param date date * @param range 指定天数范围 * @return java.util.List<java.time.LocalDate> */ public static List<LocalDate> getDayList(LocalDate date, int range) { List<LocalDate> localDateList = Lists.newArrayList(); for (int i = 0; i < range; i++) { LocalDate temp = date.minusDays(i); localDateList.add(temp); } Collections.reverse(localDateList); return localDateList; } /** * 从时间戳获取当前时间 * * @param timestamp 时间戳 * @return java.time.LocalDateTime */ public static LocalDateTime getDateTimeFromTimestamp(long timestamp) { Instant instant = Instant.ofEpochMilli(timestamp); ZoneId zone = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant, zone); } /** * 从时间戳获取当前时间 * * @param timestamp 时间戳 * @return java.time.LocalDate */ public static LocalDate getDateFromTimestamp(long timestamp) { LocalDateTime date = getDateTimeFromTimestamp(timestamp); return date.toLocalDate(); } public static LocalDateTime StringToLocalDateTime(String str) { LocalDateTime localDateTime = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); return localDateTime; } public static LocalTime StringToLocalTime(String str) { LocalTime localTime = LocalTime.parse(str, DateTimeFormatter.ofPattern("HH:mm:ss")); return localTime; } public static LocalDate StringToLocalDate(String str) { LocalDate localDate = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd")); return localDate; } //比较两个日期相差几天 public static int daydiff(Date fDate, Date oDate) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(fDate); Calendar cal2 = Calendar.getInstance(); cal2.setTime(oDate); int day1 = cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR); int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if (year1 != year2) //不同一年 { int timeDistance = 0; for (int i = year1; i < year2; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年 { timeDistance += 366; } else //不是闰年 { timeDistance += 365; } } return timeDistance + (day2 - day1); } else //同一年 { return day2 - day1; } } /* * 将时间转换为时间戳 */ public static String localDateToStamp(String s) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String res = ""; if (!"".equals(s)) { try { res = String.valueOf(sdf.parse(s).getTime() / 1000); } catch (Exception e) { System.out.println("传入了null值"); } } else { long time = System.currentTimeMillis(); res = String.valueOf(time / 1000); } return res; } /* * 将时间转换为时间戳 */ public static String localDatetimeToStamp(String s) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String res = ""; if (!"".equals(s)) { try { res = String.valueOf(sdf.parse(s).getTime() / 1000); } catch (Exception e) { System.out.println("传入了null值"); } } else { long time = System.currentTimeMillis(); res = String.valueOf(time / 1000); } return res; } //4.LocalDate转时间戳 // public static String localDateToStamp(LocalDate localDate) { long timestamp = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli(); return Long.toString(timestamp); } //5.LocalDateTime转时间戳 public static String localDateTimeToStamp(LocalDateTime localDateTime) { long timestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); return Long.toString(timestamp); } public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); int daydiff = daydiff(null, new Date()); System.err.println(daydiff); } //将数字转为中文 public static String ToCH(int intInput) { String si = String.valueOf(intInput); String sd = ""; if (si.length() == 1) // 個 { sd += GetCH(intInput); return sd; } else if (si.length() == 2)// 十 { if (si.substring(0, 1).equals("1")) sd += "十"; else sd += (GetCH(intInput / 10) + "十"); sd += ToCH(intInput % 10); } else if (si.length() == 3)// 百 { sd += (GetCH(intInput / 100) + "百"); if (String.valueOf(intInput % 100).length() < 2) sd += "零"; sd += ToCH(intInput % 100); } else if (si.length() == 4)// 千 { sd += (GetCH(intInput / 1000) + "千"); if (String.valueOf(intInput % 1000).length() < 3) sd += "零"; sd += ToCH(intInput % 1000); } else if (si.length() == 5)// 萬 { sd += (GetCH(intInput / 10000) + "萬"); if (String.valueOf(intInput % 10000).length() < 4) sd += "零"; sd += ToCH(intInput % 10000); } return sd; } private static String GetCH(int input) { String sd = ""; switch (input) { case 1: sd = "一"; break; case 2: sd = "二"; break; case 3: sd = "三"; break; case 4: sd = "四"; break; case 5: sd = "五"; break; case 6: sd = "六"; break; case 7: sd = "七"; break; case 8: sd = "八"; break; case 9: sd = "九"; break; default: break; } return sd; } /** * 获取当前日期前num天的日期 */ public static String getNumDayAgo(Integer num) { try { Calendar now = Calendar.getInstance(); now.add(Calendar.DAY_OF_MONTH, -num); String endDate = new SimpleDateFormat("yyyy-MM-dd").format(now.getTime()); return endDate; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 获得上周第一天 周日 00:00:00 */ public static Date getWeekStartDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, 1); calendar.add(Calendar.DATE, -7); return DateUtil.beginOfDay(calendar.getTime()); } /** * 获得上周最后一天 周六 23:59:59 */ public static Date getWeekEndDay() { Calendar calendar = Calendar.getInstance(); calendar.setTime(getWeekStartDay()); calendar.add(Calendar.DATE, 6); return DateUtil.endOfDay(calendar.getTime()); } /** * 获得本周第一天 周日 00:00:00 */ public static Date getCurrentWeekStartDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, 1); return DateUtil.beginOfDay(calendar.getTime()); } /** * 获得本周最后一天 周六 23:59:59 */ public static Date getCurrentWeekEndDay() { Calendar cal = Calendar.getInstance(); cal.setTime(getCurrentWeekStartDay()); cal.add(Calendar.DATE, 6); return DateUtil.endOfDay(cal.getTime()); } /** * 近七天开始时间 * * @return */ public static Date getNeverSevenStartTime() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.DATE, -7); return DateUtil.beginOfDay(calendar.getTime()); } /** * 近七天结束时间 * * @return */ public static Date getNeverSevenEndTime() { Calendar calendar = Calendar.getInstance(); calendar.setTime(getNeverSevenStartTime()); calendar.add(Calendar.DATE, 6); return DateUtil.endOfDay(calendar.getTime()); } /** * 昨天开始时间 * * @return */ public static Date getYesterdayStartTime() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.DATE, -1); return DateUtil.beginOfDay(calendar.getTime()); } /** * 昨天结束时间 * * @return */ public static Date getYesterdayEndTime() { return DateUtil.endOfDay(getYesterdayStartTime()); } /** * 今天开始时间 * * @return */ public static Date getTodayStartTime() { return DateUtil.beginOfDay(new Date()); } /** * 今天结束时间 * * @return */ public static Date getTodayEndTime() { return DateUtil.endOfDay(new Date()); } }
java常用时间工具类
于 2022-06-06 12:24:45 首次发布