SimpleDateFormat类的使用
概述
SimpleDateFormat类主要用于格式化日期Date类为字符串和将日期格式的字符串转换成Date类。
构造方法
构造器 | 说明 | 示例 |
---|---|---|
public SimpleDateFormat()
|
无参构造器。 |
SimpleDateFormat dateFormat=new SimpleDateFormat();
|
public SimpleDateFormat(String pattern)
|
指定日期模式的构造器。常用。 |
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
|
public SimpleDateFormat(String pattern, Locale locale)
|
使用给定模式和给定语言环境的默认日期格式符号构造一个SimpleDateFormat 。不常用。 |
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);
|
SimpleDateFormat类最常用的构造方法就是第二个,在构造器中指定日期模式。
pattern模式字符串
pattern模式字符串中可以使用的日期标识有如下这些:
匹配模式 | 备注 |
---|---|
yyyy | 年 |
MM | 月 |
dd | 日 |
hh | 12小时制(1~12) |
HH | 24小时制(0~23) |
mm | 分 |
ss | 秒 |
S | 毫秒 |
E | 星期几 |
D | 一年中的第几天 |
F | 一月中的第几个星期 |
w | 一年中的第几个星期 |
W | 一月中的第几个星期 |
a | 上下午标识 |
k | 和HH差不多,表示24小时制(1~24) |
K | 和hh差不多,表示12小时制(0~11) |
z | 表示时区 |
实例如下:
public class Demo {public static void main(String[] args) {SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 S毫秒 a z");String format = dateFormat.format(new Date());System.out.println(format);}
}
常用方法
将日期字符串转换成Date类对象
常将日期格式字符串转换成Date类对象的方法是parse()方法。其API说明如下:
成员方法 | 说明 |
---|---|
public Date parse(String source)
|
从字符串的开头将指定字符串解析成日期对象Date。常用。 |
public abstract Date parse(String source, ParsePosition pos)
|
从字符串的指定位置将指定字符串解析成日期对象Date。默认情况下,解析是宽松的:如果输入不是此对象的格式方法使用的形式,但仍然可以解析为日期,则解析成功。 客户可以通过调用setLenient(false) 来坚持严格遵守格式。
|
对应的实例是:
public class Demo {public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException, ParseException {// parse(String source)方法SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");// 可以解析完全符合pattern模式字符串的日期字符串Date date1 = dateFormat.parse("2021-12-13");System.out.println(date1);// 可以解析字符串左匹配pattern模式字符串的日期字符串,即从字符串开头匹配解析Date date2 = dateFormat.parse("2021-12-13日期之后,我们开始说Hello World...");System.out.println(date2);// 但如果字符串开头不匹配pattern模式字符串,那么该方法将报错//Date date3 = dateFormat.parse("起始日期是2021-12-13");//System.out.println(date3);// 抛出异常:java.text.ParseException: Unparseable date: "起始日期是2021-12-13"// parse(String source, ParsePosition pos)方法// 可以解析完全符合pattern模式字符串的日期字符串,但ParsePosition的起始索引应该设置为0Date date4 = dateFormat.parse("2021-12-13", new ParsePosition(0));System.out.println(date4);// 可以解析字符串左匹配pattern模式字符串的日期字符串,即从字符串开头匹配解析,即index表示第几个字符(从1开始)Date date5 = dateFormat.parse("2021-12-13日期之后,我们开始说Hello World...", new ParsePosition(0));System.out.println(date5);// 如果字符串开头不匹配pattern模式字符串,那么就可以利用ParsePosition类设置匹配的索引位置,从1开始Date date6 = dateFormat.parse("起始日期是2021-12-13", new ParsePosition(5));System.out.println(date6);}
}
将Date类对象转换成日期字符串
成员方法 | 说明 |
---|---|
public final String format(Date date)
|
将Date日期类对象转换成日期/时间字符串。常用。 |
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
|
将Date日期类对象转换成日期/时间字符串。date是要格式化为日期/时间的Date对象;toAppendTo返回日期/时间字符串的字符串缓冲区。fieldPosition是跟踪返回字符串中字段的位置。 |
常用的就是format(Date date)方法。将Date日期对象转换成日期格式字符串。实例代码如下:
public class Demo {public static void main(String[] args) {SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = dateFormat.format(new Date());System.out.println(format);}
}
其他方法
void setLenient(boolean lenient)
该方法的API如下:
/*** 设置日期/时间的解析是否宽松。* 如果设置了宽松解析(即设置为true),那么解析器可以解析与此对象格式不精确匹配的输入。* 如果设置了严格解析(即设置为false),那么输入必须与此对象的格式严格匹配。* 此方法等效于:getCalendar().setLenient(lenient)。** @param lenient 当为true,解析是宽松的;当为false,解析是严格的*/public void setLenient(boolean lenient){calendar.setLenient(lenient);}
可能只是看介绍是无法明白严格解析和宽松解析的区别。看下面的代码可能有更清晰的认知:
public class Demo {public static void main(String[] args) throws ParseException {SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");// 宽松解析,即虽然"2021-26-15"这个日期字符串中关于月份的日期不对,但通过宽松解析,26个月可以解析为2年2个月,而不会报错dateFormat.setLenient(true);Date date1 = dateFormat.parse("2021-26-15");System.out.println(date1);// 严格解析,即"2021-26-15"中的月份数字只能是1到12,不能是其他数字,否则会报错,无法解析成功dateFormat.setLenient(false);Date date2 = dateFormat.parse("2021-26-15");// java.text.ParseException: Unparseable date: "2021-26-15"System.out.println(date2);}
}
SimpleDateFormat类的使用相关推荐
- Date类(java.util)和SimpleDateFormat类(java.text)
在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用: 使用 Date 类的默 ...
- 用SimpleDateFormat类设置时间格式
用SimpleDateFormat类设置时间格式 www.diybl.com 时间:2008-10-02 作者:佚名 编辑:本站 点击: [评论] String[] formatArr = {&quo ...
- Java的知识点22——时间处理相关类、Date时间类(java.util.Date)、DateFormat类和SimpleDateFormat类、Calendar日历类
时间处理相关类 用long类型的变量来表示时间,获得现在时刻的"时刻数值":long now = System.currentTimeMillis(); Date时间类(java. ...
- java.text.dateformat_使用java.text.SimpleDateFormat类进行文本日期和Date日期的转换
Date类内部既不存储年月日也不存储时分秒,而是存储一个从1970年1月1日0点0分0秒开始的毫秒数,而真正有用的年月日时分秒毫秒都是从这个毫秒数转化而来,这是它不容易被使用的地方,尤其是显示和存储的 ...
- 6、日期格式化(DateFormat类和SimpleDateFormat类)
格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式.例如将日期"Fri May 18 15:46:24 CST2016" 格式转换为 "2016-5-18 15 ...
- 第三次学JAVA再学不好就吃翔(part73)--SimpleDateFormat类
学习笔记,仅供参考,有错必纠 DateFormat类 DateFormat类是java.text包下的一个类,使用该类时需要导包. DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关 ...
- Java计算时间差_传统的SimpleDateFormat类
Java计算时间差_传统的SimpleDateFormat类 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd ...
- 【Java】浅析SimpleDateFormat类
介绍SimpleDateFormat类 SimpleDateFormat类 :java.text.SimpleDateFormat 一个以与语言环境相关的方式来格式化和分析日期的具体类.是抽象类 ja ...
- SimpleDateFormat类 java 1614697530
SimpleDateFormat类 java 1614697530 关于 格式 构造方法 格式化与解析 演练 从日期到字符串 指定格式 加上年月日文字 演练 从字符串到日期
- SimpleDateFormat类的安全问题,这6个方案总有一个适合你
本文分享自华为云社区<[高并发]SimpleDateFormat类的线程安全问题和解决方案(附6种解决方案)>,作者: 冰 河. 首先问下大家:你使用的SimpleDateFormat类还 ...
最新文章
- 图灵访谈 | 微盟技术专家戴頔:永远行走在路上
- python全栈脱产第25天------组合、多态、封装、property装饰器
- android post json格式,Android中post请求传递json数据给服务端的实例
- MySql 数据库 - 重置数据库、重置初始密码方法,数据库初始化方法,长时间不用忘记密码暴力解决方法
- Springboot与Ajax整合练习?
- 四种launchMode启动方式
- Router Configuration5
- 线上python课程一般多少钱-Python在线培训课程费用是多少?值不值得报名?
- Cesium 1.51新功能评测
- 页面回收之shrink_zone的实现
- 【feign源码】流程分析
- 用excel做线性规划
- keil5安装之后的L6002U问题
- linux系统双显示器怎么设置复制,linux系统双显示器设置
- SSM+高校教室管理系统 毕业设计-附源码181523
- 【Android】用Cubism 2制作自己的Live2D——软件的安装与破解!
- 统计软件是其他计算机软件吗,电脑统计软件,statistical computing software,音标,读音,翻译,英文例句,英语词典...
- 钢琴入门教程:钢琴的基础知识
- 联想笔记本计算机里没有dvd,联想笔记本电脑启动设备引导列表没有DVD选项的解决方法...
- H5 (React) 移动端监听软键盘弹起、收起