zoukankan      html  css  js  c++  java
  • Jdk8最全日期转换类,String转各种日期,各种日期转String

    我的另一篇日期实用博文:《SpringBoot传参设置全局Timestamp和Date日期转换类
    Jdk8日期转换类:
    import org.junit.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.sql.Timestamp;
    import java.time.*;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.UnsupportedTemporalTypeException;
    
    public class Jdk8日期转换类 {
        private static Logger logger = LoggerFactory.getLogger(Jdk8日期转换类.class);
    
        /***********************************************
         *      错误示例与正例
         ***********************************************
         */
    
        @Test
        public void LocalDate_to_String_错误示例_LocalDate不包含时分秒不能使用HHmmss(){
            try{
                LocalDate date = LocalDate.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                String text = date.format(formatter);
            }catch (UnsupportedTemporalTypeException e){
                logger.error("错误示例: LocalDate不包含时分秒不能使用HH:mm:ss, 应该用LocalDateTime, "+e.getMessage(), e);
            }
        }
        @Test
        public void String_to_LocalDateTime_错误示例_LocalDateTime格式化必须包含时分秒HHmmss(){
            try {
                String 日期string = "2020-04-13";
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                LocalDateTime parsedDate = LocalDateTime.parse(日期string, formatter);
            }catch (DateTimeException e){
                logger.error("LocalDateTime格式化必须包含时分秒HH:mm:ss, " + e.getMessage(), e);
            }
        }
    
        @Test
        public void LocalDateTime_to_String_正例_但是LocalDateTime可以使用格式yyyy_MM_dd(){
            LocalDateTime date = LocalDateTime.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String 日期string = date.format(formatter);
            logger.info("LocalDateTime转String,日期string===" + 日期string);
        }
    
        /***********************************************
         *      各种日期之间互转
         ***********************************************
         */
    
        @Test
        public void util_date_互转_LocalDate() {  // java.util.Date 转 LocalDate
            // java.util.Date 转 LocalDate
            java.util.Date date = new java.util.Date();
            Instant instant = date.toInstant();
            ZoneId zone = ZoneId.systemDefault();
            LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
            LocalDate localDate = localDateTime.toLocalDate();
    
            // LocalDate 转 java.util.Date
            LocalDate localDate2 = LocalDate.now();
            Instant instant2 = localDate2.atStartOfDay().atZone(zone).toInstant();
            java.util.Date date2 = java.util.Date.from(instant2);
        }
        @Test
        public void util_date_互转_LocalDateTime() {  // java.util.Date 转 LocalDateTime    
            // util Date 转 LocalDateTime
            java.util.Date date = new java.util.Date();
            LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
    
            // LocalDateTime 转 util Date
            Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
            date = java.util.Date.from(instant);
        }
        @Test
        public void util_date_互转_sql_Timestamp(){  // java.util.Date 转 java.sql.Timestamp
            //  LocalDateTime
            java.util.Date date = new java.util.Date();
            Instant instant = date.toInstant();
            LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
            java.sql.Timestamp timestamp = Timestamp.valueOf(localDateTime);
            logger.info("java.util.Date转java.sql.Timestamp,timestamp===" + timestamp.toString());
    
            // LocalDateTime 转 util Date
            LocalDateTime localDateTime2 = timestamp.toLocalDateTime();
        }
    
        @Test
        public void util_date_互转_LocalTime() {  // java.util.Date 转 LocalTime
            // LocalTime 转 java.util.Date
            java.util.Date date = new java.util.Date();
            Instant instant =date.toInstant();
            ZoneId zone = ZoneId.systemDefault();
            LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
            LocalTime localTime = localDateTime.toLocalTime();
            LocalDate localDate = localDateTime.toLocalDate();
    
            // java.util.Date 转 LocalTime
            LocalTime localTime2 = LocalTime.now();
            LocalDate localDate2 = LocalDate.now();
            LocalDateTime localDateTime2 = LocalDateTime.of(localDate2, localTime2);
            Instant instant2 = localDateTime2.atZone(zone).toInstant();
            java.util.Date date2 = java.util.Date.from(instant2);
        }
    
        /***********************************************
         *      各种日期转String
         ***********************************************
         */
    
        @Test
        public void LocalDate_to_String(){ //得到不包含时分秒的字符串
            LocalDate date = LocalDate.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String 日期string = date.format(formatter);
            logger.info("LocalDate转String,日期string===" + 日期string);
        }
        @Test
        public void LocalDateTime_to_String(){ // 得到包含时分秒的字符串
            LocalDateTime date = LocalDateTime.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            String 日期string = date.format(formatter);
            logger.info("LocalDateTime转String,日期string===" + 日期string);
        }
        @Test
        public void java_util_Date_to_String(){ // java.util.Date 转 String
            java.util.Date date = new java.util.Date();
            Instant instant = date.toInstant();
            LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String 日期string = localDateTime.format(formatter);
            logger.info("java.util.Date转String,日期string===" + 日期string);
        }
        @Test
        public void java_sql_Date_to_String(){ // java.sql.Date 转 String
            java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
            LocalDate localDate = sqlDate.toLocalDate();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String 日期string = localDate.format(formatter);
            logger.info("java.sql.Date转String,日期string===" + 日期string);
        }
        @Test
        public void java_sql_Timestamp_to_String(){ // Timestamp 转 String
            java.sql.Timestamp timestamp = new java.sql.Timestamp(System.currentTimeMillis());
            LocalDateTime localDateTime = timestamp.toLocalDateTime();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            String 日期string = localDateTime.format(formatter);
            logger.info("java.sql.Timestamp转String,日期string===" + 日期string);
        }
    
    
        /***********************************************
         *      String转各种日期
         ***********************************************
         */
    
        @Test
        public void String_to_LocalDate(){  // String 转 LocalDate
            String 日期string = "2020-04-13";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate parsedDate = LocalDate.parse(日期string, formatter);
            logger.info("String转LocalDate,LocalDate===" + parsedDate.toString());
        }
        @Test
        public void String_to_LocalDateTime(){  // String 转 LocalDateTime
            String 日期string = "2020-04-13 18:49:30";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime parsedDate = LocalDateTime.parse(日期string, formatter);
            logger.info("String转LocalDateTime,LocalDateTime===" + parsedDate.toString());
        }
        @Test
        public void String_to_java_util_Date(){  // String 转 java.util.Date
            String 日期string = "2020-04-13";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate localDate = LocalDate.parse(日期string, formatter);
            Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
            java.util.Date utilDate = java.util.Date.from(instant);
            logger.info("String转java.util.Date,date===" + utilDate.toString());
        }
        @Test
        public void String_to_java_sql_Date(){  // String 转 java.sql.Date
            String 日期string = "2020-04-20";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate localDate = LocalDate.parse(日期string, formatter);
            java.sql.Date date = java.sql.Date.valueOf(localDate);
            logger.info("String转java.sql.Date,date===" + date.toString());
        }
        @Test
        public void String_to_java_sql_Timestamp(){  // String 转 java.sql.Date
            String 日期string = "2020-04-20 19:20:00";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime localDateTime = LocalDateTime.parse(日期string, formatter);
            java.sql.Timestamp timestamp = Timestamp.valueOf(localDateTime);
            logger.info("String转java.sql.Timestamp,timestamp===" + timestamp.toString());
        }
    
    }
     

    end.
  • 相关阅读:
    题解 CF1156A 【Inscribed Figures】
    P1352 没有上司的舞会 题解
    厦门大学附属实验中学第五次OI模拟赛(XDFZOI5)比赛须知
    属于自己的期中考总结
    做题笔记 【模板】字符串哈希
    2018 总结
    做题笔记 图的遍历 P3916
    做题笔记 Splitting into digits CF1104A
    LIS (nlogn)
    标准正交基
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/12693359.html
Copyright © 2011-2022 走看看