概述

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类的使用相关推荐

  1. Date类(java.util)和SimpleDateFormat类(java.text)

    在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用: 使用 Date 类的默 ...

  2. 用SimpleDateFormat类设置时间格式

    用SimpleDateFormat类设置时间格式 www.diybl.com 时间:2008-10-02 作者:佚名 编辑:本站 点击: [评论] String[] formatArr = {&quo ...

  3. Java的知识点22——时间处理相关类、Date时间类(java.util.Date)、DateFormat类和SimpleDateFormat类、Calendar日历类

    时间处理相关类 用long类型的变量来表示时间,获得现在时刻的"时刻数值":long now = System.currentTimeMillis(); Date时间类(java. ...

  4. java.text.dateformat_使用java.text.SimpleDateFormat类进行文本日期和Date日期的转换

    Date类内部既不存储年月日也不存储时分秒,而是存储一个从1970年1月1日0点0分0秒开始的毫秒数,而真正有用的年月日时分秒毫秒都是从这个毫秒数转化而来,这是它不容易被使用的地方,尤其是显示和存储的 ...

  5. 6、日期格式化(DateFormat类和SimpleDateFormat类)

    格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式.例如将日期"Fri May 18 15:46:24 CST2016" 格式转换为 "2016-5-18 15 ...

  6. 第三次学JAVA再学不好就吃翔(part73)--SimpleDateFormat类

    学习笔记,仅供参考,有错必纠 DateFormat类 DateFormat类是java.text包下的一个类,使用该类时需要导包. DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关 ...

  7. Java计算时间差_传统的SimpleDateFormat类

    Java计算时间差_传统的SimpleDateFormat类 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd ...

  8. 【Java】浅析SimpleDateFormat类

    介绍SimpleDateFormat类 SimpleDateFormat类 :java.text.SimpleDateFormat 一个以与语言环境相关的方式来格式化和分析日期的具体类.是抽象类 ja ...

  9. SimpleDateFormat类 java 1614697530

    SimpleDateFormat类 java 1614697530 关于 格式 构造方法 格式化与解析 演练 从日期到字符串 指定格式 加上年月日文字 演练 从字符串到日期

  10. SimpleDateFormat类的安全问题,这6个方案总有一个适合你

    本文分享自华为云社区<[高并发]SimpleDateFormat类的线程安全问题和解决方案(附6种解决方案)>,作者: 冰 河. 首先问下大家:你使用的SimpleDateFormat类还 ...

最新文章

  1. 图灵访谈 | 微盟技术专家戴頔:永远行走在路上
  2. python全栈脱产第25天------组合、多态、封装、property装饰器
  3. android post json格式,Android中post请求传递json数据给服务端的实例
  4. MySql 数据库 - 重置数据库、重置初始密码方法,数据库初始化方法,长时间不用忘记密码暴力解决方法
  5. Springboot与Ajax整合练习?
  6. 四种launchMode启动方式
  7. Router Configuration5
  8. 线上python课程一般多少钱-Python在线培训课程费用是多少?值不值得报名?
  9. Cesium 1.51新功能评测
  10. 页面回收之shrink_zone的实现
  11. 【feign源码】流程分析
  12. 用excel做线性规划
  13. keil5安装之后的L6002U问题
  14. linux系统双显示器怎么设置复制,linux系统双显示器设置
  15. SSM+高校教室管理系统 毕业设计-附源码181523
  16. 【Android】用Cubism 2制作自己的Live2D——软件的安装与破解!
  17. 统计软件是其他计算机软件吗,电脑统计软件,statistical computing software,音标,读音,翻译,英文例句,英语词典...
  18. 钢琴入门教程:钢琴的基础知识
  19. 联想笔记本计算机里没有dvd,联想笔记本电脑启动设备引导列表没有DVD选项的解决方法...
  20. H5 (React) 移动端监听软键盘弹起、收起

热门文章

  1. 反转字符串(Java实现)
  2. 云管平台监控实践分享
  3. MYSQL数据库(九)- 修改数据表名称、列名称
  4. 支持向量机中所谓的支持向量究竟是什么?
  5. Web前端——移动端页面开发
  6. 一个int和long占多少个字节
  7. strstr和strchr的区别
  8. npm scripts
  9. BP神经网络原理及在Matlab中的应用
  10. qt 调用linux键盘输入,嵌入式linux上QT标准键盘输入的实现