SimpleDateFormat用法详解

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的认知和理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SimpleDateFormatJava中用于日期格式化和解析的类。它提供了一系列的方法来格式化日期对象为字符串,或者将字符串解析为日期对象。 下面是SimpleDateFormat的一些常用方法使用详解: 1. 构造方法: - SimpleDateFormat(String pattern):使用指定的模式创建SimpleDateFormat对象。模式字符串用于指定日期格式,例如"yyyy-MM-dd HH:mm:ss"表示年-月-日 时:分:秒。 2. 格式化日期为字符串: - String format(Date date):将给定的日期对象格式化为字符串。例如: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String formattedDate = sdf.format(date); ``` 3. 解析字符串为日期对象: - Date parse(String source):将给定的字符串解析为日期对象。注意,解析时需要符合指定的模式。例如: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateString = "2022-01-01"; Date date = sdf.parse(dateString); ``` 4. 设置和获取日期格式化模式: - void applyPattern(String pattern):设置日期格式化模式。 - String toPattern():获取当前的日期格式化模式。 5. 设置和获取日期格式化时区: - void setTimeZone(TimeZone zone):设置日期格式化时区。 - TimeZone getTimeZone():获取当前的日期格式化时区。 6. 设置和获取日期格式化的严格性: - void setLenient(boolean lenient):设置日期解析的严格性。默认为true,表示宽松解析,允许解析不符合规范的日期字符串。 - boolean isLenient():判断日期解析是否为宽松模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值