java常用时间工具类
生活随笔
收集整理的這篇文章主要介紹了
java常用时间工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 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 += "十";elsesd += (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常用时间工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 捕获海康威视IPCamera图像,转成O
- 下一篇: day9-字符串作业