SimpleDateFormat用法详解

SimpleDateFormat是一个用于日期格式化和解析的类,支持自定义日期时间模式。例如yyyy-MM-ddHH:mm:ss。它不是线程安全的,在多线程环境中应使用ThreadLocal进行封装,确保每个线程有自己的SimpleDateFormat实例,避免安全问题。
摘要由CSDN通过智能技术生成

SimpleDateFormat类是一个以语言环境敏感的方式来格式化和解析日期的工具类。它允许你将日期格式化为字符串,或从字符串解析为日期。
格式化日期为字符串:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(new Date());
System.out.println(dateString);
// 2020-10-21 10:15:30

解析字符串为日期:

String dateString = "2020-10-21 10:15:30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateString); 
System.out.println(date);
// Wed Oct 21 10:15:30 CST 2020

SimpleDateFormat支持的日期时间模式字母有:

  • y:年,可以显示2位或4位
  • M:月
  • d:日
  • H:时 在一天中的小时数(0-23)
  • h:时 在一天中的小时数(1-12)
  • m:分
  • s:秒
    所以可以定义多种格式,如:
  • yyyy-MM-dd:2020-10-21
  • yy-M-d h:mm a:20-10-21 10:15 上午
  • EEE, MMM d, ''yy:Wed, Oct 21, '20
    SimpleDateFormat不是线程安全的,如果在多线程环境下使用,可以使用ThreadLocal封装SimpleDateFormat:
public class DateUtil {
    private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>(){
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };

    public static String formatDate(Date date) {
        return threadLocal.get().format(date);
    }
} 

通过ThreadLocal,每个线程会有自己独立的SimpleDateFormat对象,这样多个线程 Format 时间时就不会出现线程安全问题。
SimpleDateFormat是一个功能强大且常用的日期格式化和解析工具类。通过对其格式化模式字母的理解和掌握,可以实现多种日期格式化,并在多线程环境下注意其线程安全问题。希望通过这篇博客,可以加深您对SimpleDateFormat的认知和理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值