zoukankan      html  css  js  c++  java
  • LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解)

    摘自:https://www.jianshu.com/p/b7e72e585a37

     

    LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解)

    三汪
    0.3122017.11.21 15:11:58字数 342阅读 13,092

    本文阅读时间5分钟。本文由作者三汪首发于简书。


    看到网上好像关于Java8提供的新时间包java.time的示例几乎都是关于新类和Date,Calendar这些类的互相转换。
    很诧异没有看到与String的互相转换。
    那就让我来提供一个示例吧。

    转换示例

    LocalDate转String

    代码

        @Test
        public void LocalDate转String() {        
            LocalDate date = LocalDate.now();
            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            String dateStr = date.format(fmt);
            System.out.println("LocalDate转String:"+dateStr);
        }
    

    控制台输出结果

    LocalDate转String:2017-11-21
    

    LocalDateTime转String

    代码

        @Test
        public void LocalDateTime转String() {        
            LocalDateTime dateTime = LocalDateTime.now();
            
            //使用预定义实例来转换
            DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE;
            String dateStr = dateTime.format(fmt);
            System.out.println("LocalDateTime转String[预定义]:"+dateStr);
            
            //使用pattern来转换      
            //12小时制与24小时制输出由hh的大小写决定
            DateTimeFormatter fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS");
            String dateStr12 = dateTime.format(fmt12);
            System.out.println("LocalDateTime转String[pattern](12小时制):"+dateStr12);
            
            DateTimeFormatter fmt24 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");       
            String dateStr24 = dateTime.format(fmt24);      
            System.out.println("LocalDateTime转String[pattern](24小时制):"+dateStr24);
            
            //如果想要给12小时制时间加上am/pm,这样子做:
            fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS a");
            dateStr12 = dateTime.format(fmt12);
            System.out.println("LocalDateTime转String[pattern](12小时制带am/pm):"+dateStr12);
        }
    

    控制台输出结果

    LocalDateTime转String[预定义]:2017-11-21
    LocalDateTime转String[pattern](12小时制):2017-11-21 02:51:51:550
    LocalDateTime转String[pattern](24小时制):2017-11-21 14:51:51:550
    LocalDateTime转String[pattern](12小时制带am/pm):2017-11-21 02:51:51:550 下午
    

    String转LocalDate和LocalDateTime

    代码

        @Test
        public void String转LocalDate和LocalDateTime(){
            String str = "2017-11-21 14:41:06:612";
            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");     
            LocalDate date = LocalDate.parse(str, fmt);
            LocalDateTime time = LocalDateTime.parse(str, fmt);
            System.out.println("date:"+date);
            System.out.println("time:"+time);
        }
    

    控制台输出结果

    date:2017-11-21
    time:2017-11-21T14:41:06.612
    

    DateTimeFormatter详解

    DateTimeFormatter我们更多的是直接使用pattern来做转换,
    其实这个类本身已经提供了一些预定义好的实例供我们使用。
    下面把两者的具体释义和示例都贴出来供大家参考。

    预定义

    Predefined Formatters                       Formatter Description                                               Example 
    ----------------------                      ----------------------                                              ------------ 
    ofLocalizedDate(dateStyle)                  Formatter with date style from the locale                           '2011-12-03' 
    ofLocalizedTime(timeStyle)                  Formatter with time style from the locale                           '10:15:30' 
    ofLocalizedDateTime(dateTimeStyle)          Formatter with a style for date and time from the locale            '3 Jun 2008 11:05:30' 
    ofLocalizedDateTime(dateStyle,timeStyle)    Formatter with date and time styles from the locale                 '3 Jun 2008 11:05' 
    BASIC_ISO_DATE                              Basic ISO date                                                      '20111203' 
    ISO_LOCAL_DATE                              ISO Local Date                                                      '2011-12-03' 
    ISO_OFFSET_DATE                             ISO Date with offset                                                '2011-12-03+01:00' 
    ISO_DATE                                    ISO Date with or without offset                                     '2011-12-03+01:00'; '2011-12-03' 
    ISO_LOCAL_TIME                              Time without offset                                                 '10:15:30' 
    ISO_OFFSET_TIME                             Time with offset                                                    '10:15:30+01:00' 
    ISO_TIME                                    Time with or without offset                                         '10:15:30+01:00'; '10:15:30' 
    ISO_LOCAL_DATE_TIME                         ISO Local Date and Time                                             '2011-12-03T10:15:30' 
    ISO_OFFSET_DATE_TIME                        Date Time with Offset                                               '2011-12-03T10:15:30+01:00' 
    ISO_ZONED_DATE_TIME                         Zoned Date Time                                                     '2011-12-03T10:15:30+01:00[Europe/Paris]' 
    ISO_DATE_TIME                               Date and time with ZoneId                                           '2011-12-03T10:15:30+01:00[Europe/Paris]' 
    ISO_ORDINAL_DATE                            Year and day of year                                                '2012-337' 
    ISO_WEEK_DATE                               Year and Week                                                       '2012-W48-6' 
    ISO_INSTANT                                 Date and Time of an Instant                                         '2011-12-03T10:15:30Z'  
    RFC_1123_DATE_TIME                          RFC 1123 / RFC 822                                                  'Tue, 3 Jun 2008 11:05:30 GMT' 
    

    Pattern

    All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined: 
    
      Symbol  Meaning                     Presentation      Examples
      ------  -------                     ------------      -------
       G       era                         text              AD; Anno Domini; A
       u       year                        year              2004; 04
       y       year-of-era                 year              2004; 04
       D       day-of-year                 number            189
       M/L     month-of-year               number/text       7; 07; Jul; July; J
       d       day-of-month                number            10
    
       Q/q     quarter-of-year             number/text       3; 03; Q3; 3rd quarter
       Y       week-based-year             year              1996; 96
       w       week-of-week-based-year     number            27
       W       week-of-month               number            4
       E       day-of-week                 text              Tue; Tuesday; T
       e/c     localized day-of-week       number/text       2; 02; Tue; Tuesday; T
       F       week-of-month               number            3
    
       a       am-pm-of-day                text              PM
       h       clock-hour-of-am-pm (1-12)  number            12
       K       hour-of-am-pm (0-11)        number            0
       k       clock-hour-of-am-pm (1-24)  number            0
    
       H       hour-of-day (0-23)          number            0
       m       minute-of-hour              number            30
       s       second-of-minute            number            55
       S       fraction-of-second          fraction          978
       A       milli-of-day                number            1234
       n       nano-of-second              number            987654321
       N       nano-of-day                 number            1234000000
    
       V       time-zone ID                zone-id           America/Los_Angeles; Z; -08:30
       z       time-zone name              zone-name         Pacific Standard Time; PST
       O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
       X       zone-offset 'Z' for zero    offset-X          Z; -08; -0830; -08:30; -083015; -08:30:15;
       x       zone-offset                 offset-x          +0000; -08; -0830; -08:30; -083015; -08:30:15;
       Z       zone-offset                 offset-Z          +0000; -0800; -08:00;
    
       p       pad next                    pad modifier      1
    
       '       escape for text             delimiter
       ''      single quote                literal           '
       [       optional section start
       ]       optional section end
       #       reserved for future use
       {       reserved for future use
       }       reserved for future use
     
    

    前面LocalDateTime转String的部分其实已经涉及到了一些DateTimeFormatter的不同使用方法,这里就不再重复提供demo啦。

    扩展阅读


    以上。
    希望我的文章对你能有所帮助。
    我不能保证文中所有说法的百分百正确,但我能保证它们都是我的理解和感悟以及拒绝复制黏贴。
    有什么意见、见解或疑惑,欢迎留言讨论。

  • 相关阅读:
    [转]tensorflow提示:No module named ''tensorflow.python.eager"
    mac使用pip3安装tensorflow(不用conda)
    不限速、没广告的迅雷(旧版迅雷)
    python从国内镜像安装第三方库
    Jupyter 安装并配置工作路径[转]
    VS2013只显示会附加到进程,无法启动调试
    电脑磁盘空间占用高于文件夹大小
    Latex基础
    C#/.Net 部分缩写
    texstudio设置外部浏览器及右侧预览不能使用问题
  • 原文地址:https://www.cnblogs.com/xichji/p/11777214.html
Copyright © 2011-2022 走看看