1、取當前時間戳
Long millisecond = Instant.now().toEpochMilli(); // 精確到毫秒 Long second = Instant.now().getEpochSecond();// 精確到秒
2、將Long類型的時間戳轉成字符串
/** * 將Long類型的時間戳轉換成String 類型的時間格式,時間格式為:yyyy-MM-dd HH:mm:ss */ public static String timeToString(Long time){ Assert.notNull(time, "time is null"); DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time),ZoneId.systemDefault())); }
3、時間字符串轉成Long類型的時間戳
/** * 將字符串轉日期成Long類型的時間戳,格式為:yyyy-MM-dd HH:mm:ss */ public static Long timeToLong(String time) { Assert.notNull(time, "time is null"); DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime parse = LocalDateTime.parse("2019-11-28 08:52:50", ftf); return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); }
4、時間轉換Utils
/** * 將Long類型的時間戳轉換成String 類型的時間格式,時間格式為:yyyy-MM-dd HH:mm:ss */ public static String timeToString(Long time, String format){ Assert.notNull(time, "time is null"); // "yyyy-MM-dd HH:mm:ss" DateTimeFormatter formatString = DateTimeFormatter.ofPattern(format); return formatString.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())); } /** * 將字符串轉日期成Long類型的時間戳,格式為:yyyy-MM-dd HH:mm:ss */ public static Long timeToLong(String time) { Assert.notNull(time, "time is null"); DateTimeFormatter formatString = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime parse = LocalDateTime.parse("2019-11-28 08:52:50", formatString); return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); } /** * localDate 格式化 */ public static String localDateFormat(LocalDate localDate, String format){ Assert.notNull(localDate, "time is null"); // "yyyy-MM-dd HH:mm:ss" String localDateStr = DateTranslate.timeToString(localDate2Second(localDate), format); return localDateStr; } /** * localDate 格式化 */ public static String localDateTimeFormat(LocalDateTime localDateTime, String format){ Assert.notNull(localDateTime, "time is null"); // "yyyy-MM-dd HH:mm:ss" String localDateTimeStr = DateTranslate.timeToString(localDateTime2Second(localDateTime), format); return localDateTimeStr; } /** * 取本月第一天 */ public static LocalDate firstDayOfThisMonth() { LocalDate today = LocalDate.now(); return today.with(TemporalAdjusters.firstDayOfMonth()); } /** * 取本月第一天 */ public static LocalDate firstDayOfLastMonth() { LocalDate today = LocalDate.now(); today = today.minusMonths(1); return today.with(TemporalAdjusters.firstDayOfMonth()); } /** * 取本月第N天 */ public static LocalDate dayOfThisMonth(int n) { LocalDate today = LocalDate.now(); return today.withDayOfMonth(n); } /** * 取本月最后一天 */ public static LocalDate lastDayOfThisMonth() { LocalDate today = LocalDate.now(); return today.with(TemporalAdjusters.lastDayOfMonth()); } /** * 獲取本周一 */ public static LocalDateTime firstDayOfWeek(Long date) { // long轉LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date), ZoneId.systemDefault()); return localDateTime.with(DayOfWeek.MONDAY); } /** * 獲取上周一 */ public static LocalDateTime firstDayOfLastWeek(Long date) { // long轉LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date), ZoneId.systemDefault()); LocalDateTime localDateTime1 = localDateTime.plusDays(-7); return localDateTime1.with(DayOfWeek.MONDAY); } /** * 獲取上周一 */ public static LocalDateTime lastDay(Long date) { // long轉LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(date), ZoneId.systemDefault()); LocalDateTime localDateTime1 = localDateTime.plusDays(-1); return localDateTime1; } /** * 取本月第一天的開始時間 */ public static LocalDateTime startOfThisMonth() { return LocalDateTime.of(firstDayOfThisMonth(), LocalTime.MIN); } /** * 取本月最后一天的結束時間 */ public static LocalDateTime endOfThisMonth() { return LocalDateTime.of(lastDayOfThisMonth(), LocalTime.MAX); } /** LocalDate轉時間戳 */ public static Long localDate2Second(LocalDate localDate) { return LocalDateTime.of(localDate, LocalTime.MIN).toInstant(ZoneOffset.ofHours(8)).getEpochSecond(); } /** LocalDate轉時間戳 */ public static Long localDateTime2Second(LocalDateTime localDateTime) { return localDateTime.toEpochSecond(ZoneOffset.of("+8")); }
java 8 Localdate常用API
====================================正確答案================================== getYear() int 獲取當前日期的年份 getMonth() Month 獲取當前日期的月份對象 getMonthValue() int 獲取當前日期是第幾月 getDayOfWeek() DayOfWeek 表示該對象表示的日期是星期幾 getDayOfMonth() int 表示該對象表示的日期是這個月第幾天 getDayOfYear() int 表示該對象表示的日期是今年第幾天 withYear(int year) LocalDate 修改當前對象的年份 withMonth(int month) LocalDate 修改當前對象的月份 withDayOfMonth(int dayOfMonth) LocalDate 修改當前對象在當月的日期 isLeapYear() boolean 是否是閏年 lengthOfMonth() int 這個月有多少天 lengthOfYear() int 該對象表示的年份有多少天(365或者366) plusYears(long yearsToAdd) LocalDate 當前對象增加指定的年份數 plusMonths(long monthsToAdd) LocalDate 當前對象增加指定的月份數 plusWeeks(long weeksToAdd) LocalDate 當前對象增加指定的周數 plusDays(long daysToAdd) LocalDate 當前對象增加指定的天數 minusYears(long yearsToSubtract) LocalDate 當前對象減去指定的年數 minusMonths(long monthsToSubtract) LocalDate 當前對象減去注定的月數 minusWeeks(long weeksToSubtract) LocalDate 當前對象減去指定的周數 minusDays(long daysToSubtract) LocalDate 當前對象減去指定的天數 compareTo(ChronoLocalDate other) int 比較當前對象和other對象在時間上的大小,返回值如果為正,則當前對象時間較晚, isBefore(ChronoLocalDate other) boolean 比較當前對象日期是否在other對象日期之前 isAfter(ChronoLocalDate other) boolean 比較當前對象日期是否在other對象日期之后 isEqual(ChronoLocalDate other) boolean 比較兩個日期對象是否相等