浅谈SimpleDateFormat类(下)

「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战

前言

 大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
复制代码

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

 本文主要介绍SimpleDateFormat类一些构造方法和format,parse方法以及具体使用。
复制代码

传送门:浅谈SimpleDateFormat类(上)

1. 构造方法

1.1 SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)

SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) 用给定的模式和日期符号构造 SimpleDateFormat

第二个参数DateFormatSymbols 是一个公共类,用于封装可本地化的日期-时间格式化数据,如月名、星期几的名称和时区数据。

 DateFormatSymbols value = new DateFormatSymbols();
 DateFormatSymbols value1 = new DateFormatSymbols(Locale.ENGLISH);//参数是local对象
复制代码

可选参数:

image-20211116223828069

实例展示:

 DateFormatSymbols value = new DateFormatSymbols();
 DateFormatSymbols value1 = new DateFormatSymbols(Locale.ENGLISH);
 ​
 SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'", value);
 SimpleDateFormat simpleDateFormat5 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'", value1);
 ​
 Date date4 = new Date();
 String format4 = simpleDateFormat4.format(date4);
 String format5 = simpleDateFormat5.format(date4);
 System.out.println(format4);
 System.out.println(format5);
复制代码

image-20211116225235787

1.2 SimpleDateFormat(String pattern, Locale locale)

SimpleDateFormat(String pattern, Locale locale) 用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat

这个构造函数我理解为上面哪个函数的简化版,只需要传递一个Local对象就可以。

实例展示:

 /*
 4.给定模式和语言环境
  */
 SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'",Locale.ENGLISH);
 Date date3 = new Date();
 String format3 = simpleDateFormat3.format(date3);
 System.out.println(format3);
复制代码

image-20211116225428325

参数解析见上面。

2. SimpleDateFormat类的方法

2.1 format(Date date)

String format(Date date)将传入的Date对象根据自定义的格式转化为字符串。

源码:

 public final String format(Date date)
 {
     return format(date, new StringBuffer(),
                   DontCareFieldPosition.INSTANCE).toString();
 }
复制代码

这里用的format其实是从DateFormat父类继承而来的,因此我们在使用时也常使用DateFormat创建SimpleDateFormat对象。

 DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
 String format = df.format(new Date());
 System.out.println(format);
复制代码

2.2 parse(String str)

Date parse(String str)将传入的字符串根据定义格式转化为Date对象。

源码:

 public Date parse(String source) throws ParseException
 {
     ParsePosition pos = new ParsePosition(0);
     Date result = parse(source, pos);
     if (pos.index == 0)
         throw new ParseException("Unparseable date: "" + source + """ ,
             pos.errorIndex);
     return result;
 }
复制代码

这里的parse方法也是从父类继承而来。

 String str = "2019年12月25日";
 try {
     Date parse = df.parse(str);
     System.out.println(parse);
 } catch (ParseException e) {
     e.printStackTrace();
 }
复制代码

3. SimpleDateFormat类的应用实例

计算你现在出生了多少天。

思路:

  1. 计算出生日期到标准时间的时间长度
  2. 计算现在到标准时间的时间长度
  3. 两者相减

具体实现:

 public class SimpleDateFormatTest {
     public static void main(String[] args) throws ParseException {
         DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
         String birthday = "2000年11月1日";
         Date timeBirthday = df.parse(birthday);
         Date nowTime = new Date();
         //相减后得到毫秒数,换算成天数
         long day = (nowTime.getTime()-timeBirthday.getTime())/1000/60/60/24;
         System.out.println(day);
     }
 }
复制代码

结语

致此关于SimpleDateFormat类的学习就到这里了,希望能对读者有所帮助。如有不正之处,欢迎掘友们留言指正。

おすすめ

転載: juejin.im/post/7031425709142704135