Java8中時間的字符串和Long時間戳互轉


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    比較兩個日期對象是否相等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM