美文网首页
java 日期时间格式化

java 日期时间格式化

作者: 饱饱抓住了灵感 | 来源:发表于2022-11-09 09:42 被阅读0次

java时间格式化有3种方法

  1. SimpleDateFormat(要结合ThreadLocal使用,避免并发问题)
  2. java8新增的DateTimeFormatter
  3. 引入第三方类库

代码示例:

import org.apache.commons.lang3.time.DateFormatUtils;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;

public class DateUtil {

    private static final String YYYY_MM_DD_HH_MM_SS =  "yyyy-MM-dd HH:mm:ss";
    private static final ThreadLocal<SimpleDateFormat> threadLocalDateFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS, Locale.US));
    private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM_SS);
    
    /**
     * SimpleDateFormat要结合ThreadLocal使用,避免并发问题
     */
    public static String formatBySimpleDateFormat(Date date, String... pattern){
        SimpleDateFormat simpleDateFormat = threadLocalDateFormat.get();
        if (pattern.length > 0) {
            simpleDateFormat.applyPattern(pattern[0]);
        }
        return simpleDateFormat.format(date);
    }


    /**
     * java8新增的方法
     */
    public static String formatByDateTimeFormatter(Date date, String... pattern){
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        if (pattern.length > 0) {
            return DateTimeFormatter.ofPattern(pattern[0]).withZone(ZoneId.systemDefault()).format(localDateTime);
        }
        return dateTimeFormatter.format(localDateTime);
    }

    /**
     * 阿帕奇的方法
     */
    public static String formatApacheDateFormatUtils(Date date, String... pattern){
        if (pattern.length > 0) {
            return DateFormatUtils.format(date, pattern[0]);
        }
        return DateFormatUtils.format(date, YYYY_MM_DD_HH_MM_SS);
    }
}

时间格式表:

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 (context sensitive) Month July; Jul; 07
L Month in year (standalone form) 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

相关文章

网友评论

      本文标题:java 日期时间格式化

      本文链接:https://www.haomeiwen.com/subject/nzgntdtx.html