zoukankan      html  css  js  c++  java
  • java中Date与DateFormat的格式输出

    一、DateFormat    

    java.text.DateFormat 

    使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:

    • SHORT 完全为数字,如 12.13.52 或 3:30pm
    • MEDIUM 较长,如 Jan 12, 1952
    • LONG 更长,如 January 12, 1952 或 3:30:32pm
    • FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST。

    如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。 

    使用当地时区
    Date date = new Date();
    //日期格式,精确到日 2017-4-16
    DateFormat df1 = DateFormat.getDateInstance();
    System.out.println(df1.format(date));
    
    //可以精确到秒  2017-4-16 12:43:37
    DateFormat df2 = DateFormat.getDateTimeInstance();
    System.out.println(df2.format(date));
    
    //只显示出时时分秒 12:43:37
    DateFormat df3 = DateFormat.getTimeInstance();
    System.out.println(df3.format(date));
    
    //显示日期,周,上下午,时间(精确到秒)
    //2017年4月16日 星期日 下午12时43分37秒 CST
    DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
    System.out.println(df4.format(date));
    
    //显示日期,上下午,时间(精确到秒) 
    //2017年4月16日 下午12时43分37秒
    DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
    System.out.println(df5.format(date));
    
    //显示日期,上下午,时间(精确到秒) 
    //2017年4月16日 下午12时43分37秒
    DateFormat df5_1 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.CHINA);
    System.out.println(df5_1.format(date));
    //显示日期,上下午,时间(精确到分) 17-4-16 下午12:43
    DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    System.out.println(df6.format(date));
    
    //显示日期,时间(精确到秒) 2017-4-16 12:43:37 
    DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
    System.out.println(df7.format(date));

    二、 SimpleDateFormat

    java.text.SimpleDateFormat

    定义了以下模式字母(所有其他字符 'A''Z''a''z' 都被保留):

    字母日期或时间元素表示示例
    G Era 标志符 Text AD
    y Year 1996; 96
    M 年中的月份 Month July; Jul; 07
    w 年中的周数 Number 27
    W 月份中的周数 Number 2
    D 年中的天数 Number 189
    d 月份中的天数 Number 10
    F 月份中的星期 Number 2
    E 星期中的天数 Text Tuesday; Tue
    a Am/pm 标记 Text PM
    H 一天中的小时数(0-23) Number 0
    k 一天中的小时数(1-24) Number 24
    K am/pm 中的小时数(0-11) Number 0
    h am/pm 中的小时数(1-12) Number 12
    m 小时中的分钟数 Number 30
    s 分钟中的秒数 Number 55
    S 毫秒数 Number 978
    z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
    Z 时区 RFC 822 time zone -0800


    实例参数

    日期和时间模式结果
    "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
    "EEE, MMM d, ''yy" Wed, Jul 4, '01
    "h:mm a" 12:08 PM
    "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
    "K:mm a, z" 0:08 PM, PDT
    "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
    "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
    "yyMMddHHmmssZ" 010704120856-0700
    "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700


    代码结果

    Date d = new Date();
    /* h 1-12输出格式: 2017-04-16 01:01:22 */
    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String s = format1.format(d);
    System.out.println(s);
    /* H 0-23输出格式:2017-04-16 13:01:22*/
    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    s = format2.format(d);
    System.out.println(s);
    
    /* K 0-11输出格式:2017-04-16 01:01:22 */
    DateFormat format3 = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
    s = format3.format(d);
    System.out.println(s);
    
    /* k 1-24输出格式: 2017-04-16 13:01:22 */
    DateFormat format4 = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    s = format4.format(d);
    System.out.println(s);
    
    /* 输出格式: 20170416010122 */
    DateFormat format5 = new SimpleDateFormat("yyyyMMddhhmmss");
    s = format5.format(d);
    System.out.println(s);

    常用方法


    parse

    public Date parse(String texts)
    解析字符串的文本,生成 Date

    此方法试图解析文本。如果解析成功,并返回解析得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,并且返回 null。

    指定者:
    DateFormat 中的 parse
    参数:
    text - 应该解析其中一部分的 String
     
    返回:
    从字符串进行解析的 Date。如果发生错误,则返回 null。
    抛出:
    NullPointerException - 如果 text 为 null。
    另请参见:
    DateFormat.setLenient(boolean)

    parse

    public Date parse(String text,
                      ParsePosition pos)
    解析字符串的文本,生成 Date

    此方法试图解析从 pos 给定的索引处开始的文本。如果解析成功,则将 pos 的索引更新为所用最后一个字符后面的索引(不必对直到字符串结尾的所有字符进行解析),并返回解析得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,则不更改 pos 的索引,并将 pos 的错误索引设置为发生错误处的字符索引,并且返回 null。

    指定者:
    DateFormat 中的 parse
    参数:
    text - 应该解析其中一部分的 String
    pos - 具有以上所述的索引和错误索引信息的 ParsePosition 对象。
    返回:
    从字符串进行解析的 Date。如果发生错误,则返回 null。
    抛出:
    NullPointerException - 如果 textpos 为 null。
    另请参见:
    DateFormat.setLenient(boolean)

    format

    public final String format(Date date)
    将一个 Date 格式化为日期/时间字符串。
    参数:
    date - 要格式化为时间字符串的时间值。
    返回:
    已格式化的时间字符串。
  • 相关阅读:
    [转帖]ExtJs与服务器的交互(一)
    Ext_两种处理服务器端返回值的方式
    命令行调用dubbo远程服务
    【转】Lombok Pojo默认初始值问题
    【转】Python之可变参数,*参数,**参数,以及传入*参数,进行解包
    Python获取并输出当前日期时间
    idea上 实现了Serializable接口,要自动生成serialVersionUID的方法
    mac下python2.x和python3.x的安装方法和升级方法/卸载
    工程代码不编译src的java目录下的xml文件问题及解决
    Spring Aop织入点语法
  • 原文地址:https://www.cnblogs.com/maokun/p/6718272.html
Copyright © 2011-2022 走看看