「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
复制代码
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍SimpleDateFormat类一些构造方法和format,parse方法以及具体使用。
复制代码
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对象
复制代码
可选参数:
实例展示:
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);
复制代码
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);
复制代码
参数解析见上面。
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类的应用实例
计算你现在出生了多少天。
思路:
- 计算出生日期到标准时间的时间长度
- 计算现在到标准时间的时间长度
- 两者相减
具体实现:
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类的学习就到这里了,希望能对读者有所帮助。如有不正之处,欢迎掘友们留言指正。
近期评论