SimpleDateFormat的pattern

来源:互联网 发布:找程序员男朋友的坏处 编辑:程序博客网 时间:2024/06/03 07:32

参考官方文档:
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

SimpleDateFormat类允许的字符

static final String patternChars = “GyMdkHmsSEDFwWahKzZYuXL”;


字符解释:

Letter Date or Time Component Presentation Examples G Era designator Text AD y Year Year 1996; 96 Y Week year Year 2009; 09 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day name in week Text Tuesday; Tue u Day number of week (1 = Monday, …, 7 = Sunday) Number 1 a Am/pm marker Text PM H Hour in day (0-23) Number 0 k Hour in day (1-24) Number 24 K Hour in am/pm (0-11) Number 0 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800 X Time zone ISO 8601 time zone -08; -0800; -08:00

示例一:

dateStr: 2017-10-19 11:16:00.083+08:00
pattern: yyyy-MM-dd HH:mm:ss.SSSX
解释:
S=毫秒 .SSS代表秒后面的小数为83毫秒
X代表时区+08:00 即北京时间的11.16分


附上线程安全的SimpleDateFormat类

/** * 线程安全的dataformat 避免了单线程内重复创建的开销 */public class ThreadLocalDateFormat {    private static final String ULOG_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss.SSSX";    private static ThreadLocal<DateFormat> threadLocalDateFormat = new ThreadLocal<>();    public static DateFormat getUlogDateFormat() {        DateFormat dateFormat = threadLocalDateFormat.get();        if (dateFormat == null) {            dateFormat = new SimpleDateFormat(ULOG_DATE_PATTERN);            dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8"));            threadLocalDateFormat.set(dateFormat);        }        return dateFormat;    }    public static long getUlogTimestamp(String ulogDateStr) throws ParseException {        return getUlogDateFormat().parse(ulogDateStr).getTime();    }}
原创粉丝点击