Java时间转化指定格式

版权声明:技术总结来自互联网,书籍,以及工作积累。如果觉得我的总结有帮助,欢迎分享。 https://blog.csdn.net/qq1332479771/article/details/85775440

背景

在做Java时间转化的时候,想获取时分秒,出现了一个bug,于是,对这了仔细研究下。

有BUG的写法

我获取时间的写法是这样的:

public static String getDatehhMMss(Date date){
    DateFormat dateFormat = new SimpleDateFormat("hhMMss");//错误写法
    //DateFormat dateFormat = new SimpleDateFormat("HHmmss");//正确写法
    return dateFormat.format(date);
}

比如,现在时间是2019-01-04 14:28:30我期望的结果是142830,但是多次运行,发现结果结果一直不对,一直是020130

时间格式化的写法

查看源码,发现java.text.DateFormatSymbols中有下面的写法:

    static final int PATTERN_ERA                  =  0; // G
    static final int PATTERN_YEAR                 =  1; // y
    static final int PATTERN_MONTH                =  2; // M
    static final int PATTERN_DAY_OF_MONTH         =  3; // d
    static final int PATTERN_HOUR_OF_DAY1         =  4; // k
    static final int PATTERN_HOUR_OF_DAY0         =  5; // H
    static final int PATTERN_MINUTE               =  6; // m
    static final int PATTERN_SECOND               =  7; // s
    static final int PATTERN_MILLISECOND          =  8; // S
    static final int PATTERN_DAY_OF_WEEK          =  9; // E
    static final int PATTERN_DAY_OF_YEAR          = 10; // D
    static final int PATTERN_DAY_OF_WEEK_IN_MONTH = 11; // F
    static final int PATTERN_WEEK_OF_YEAR         = 12; // w
    static final int PATTERN_WEEK_OF_MONTH        = 13; // W
    static final int PATTERN_AM_PM                = 14; // a
    static final int PATTERN_HOUR1                = 15; // h
    static final int PATTERN_HOUR0                = 16; // K
    static final int PATTERN_ZONE_NAME            = 17; // z
    static final int PATTERN_ZONE_VALUE           = 18; // Z
    static final int PATTERN_WEEK_YEAR            = 19; // Y
    static final int PATTERN_ISO_DAY_OF_WEEK      = 20; // u
    static final int PATTERN_ISO_ZONE             = 21; // X

同时,具体转换也可以看java.text.SimpleDateFormat#subFormat的实现。

猜你喜欢

转载自blog.csdn.net/qq1332479771/article/details/85775440