Java API - Date-SimpleDateFormat-Calendar的常用方法介绍 浅浅的花香味﹌ 2023-09-26 11:33 81阅读 0赞 #### 文章目录 #### * * * 日期与时间 * * Date类 * SimpleDateFormat类 * Calendar类 #### 日期与时间 #### ##### Date类 ##### **Date类概述** > Date类代表当前所在系统的日期时间信息。 **Date的构造器** <table> <thead> <tr> <th>名称</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>public Date()</td> <td>创建一个Date对象,代表的是系统当前此刻日期时间。</td> </tr> <tr> <td>public Date(long time)</td> <td>把时间毫秒值转换成Date日期对象。</td> </tr> </tbody> </table> **Date常用方法** <table> <thead> <tr> <th>名称</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>getTime()</td> <td>返回从1970年1月1日 00:00:00走到此刻的总的毫秒数</td> </tr> <tr> <td>setTime(long time)</td> <td>设置日期对象的时间为当前时间毫秒值对应的时间</td> </tr> </tbody> </table> **Date类获取到的时间对象有两种格式**: 时间形式一:日期类表示时间的代码 public class DateDemo { public static void main(String[] args) { // 创建日期对象 Date date = new Date(); System.out.println(date); // Wed Oct 12 16:16:56 CST 2022 } } 时间格式二: 事件毫秒值表示时间的代码 public class DateDemo { public static void main(String[] args) { // 创建日期对象 Date date = new Date(); // 获取当前时间的毫秒值 System.out.println(date.getTime()); // 1665562823334 } } **时间毫秒值 -> 日期对象的两种方法** 方式一: 通过Date类的构造器 public class DateDemo2 { public static void main(String[] args) { // 获取当前时间的毫秒值 long time = System.currentTimeMillis(); // 方式一: 通过构造器根据毫秒值得到日期对象 Date date1 = new Date(time); System.out.println(date1); // Wed Oct 12 16:39:53 CST 2022 } } 方式二: 通过setTime方法根据毫秒值获取日期对象 public class DateDemo2 { public static void main(String[] args) { // 获取当前时间的毫秒值 long time = System.currentTimeMillis(); // 方式二: 通过setTime方法根据毫秒值获取日期对象 Date date2 = new Date(); date2.setTime(time); System.out.println(date2); // Wed Oct 12 16:39:53 CST 2022 } } **小结**: 日期对象创建的两种方式: > public Date(); // 创建日期对象 > > public long getTime(); // 创建时间毫秒值 时间毫秒值恢复成日期对象的两种方式: > public Date(long time); // 方式一: 通过构造器 > > public void setTime(long time); // 方式二: 通过setTime方法 ##### SimpleDateFormat类 ##### > 上面我们分别讲解了获取日期对象格式和获取时间毫秒值的两种方式, 但是这两种展示时间的格式都不是我们想要的; > > 在开发中常见的展示时间的格式是类似于下面这样的: > > * 2022-4-23 08:20:20, 2022/4/23 08:20:20, 2022.4.23 08:20:20, 2022年4月23日 08:20:20 > > 因此我们可以通过SimpleDateFormat类完成日期时间的格式化操作 ![在这里插入图片描述][35d184c0826f459382c5bcaa495ae4fd.png_pic_center] **SimpleDateFormat类的构造器**: <table> <thead> <tr> <th>构造器</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>public SimpleDateFormat(String pattern)</td> <td>构造一个SimpleDateFormat,使用指定的格式</td> </tr> </tbody> </table> **SimpleDateFormat类的格式化方法**: <table> <thead> <tr> <th>格式化方法</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>format(Date date)</td> <td>将日期格式化成日期/时间字符串</td> </tr> <tr> <td>format(Object time)</td> <td>将时间毫秒值式化成日期/时间字符串</td> </tr> </tbody> </table> **格式化的时间形式的常用的模式对应关系如下**: ![在这里插入图片描述][090e820b64e24263b197003926b51f11.png_pic_center] **演示代码**: > 格式化日期对象 public class DateDemo3 { public static void main(String[] args) { // 获取当前日期对象 Date date = new Date(); // 格式化日期对象(指定最终格式化的形式) SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日"); String newDate = sf.format(date); System.out.println(newDate); } } > 格式化时间毫秒值 public class DateDemo3 { public static void main(String[] args) { Date date = new Date(); // 获取当前日期毫秒值 long time = date.getTime(); // 格式化日期对象(指定最终格式化的形式) SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE"); // EEE表示星期几 String newDate = sf.format(time); System.out.println(newDate); } } **SimpleDateFormat可以解析字符串时间成为日期对象**: > 2011-11-11 11:11:22 -> Date日期对象 **通过parse方法解析**: > 需要注意的是: 使用parse方法时编辑器会提醒代码异常, 我们需要alt+回车将异常抛出 <table> <thead> <tr> <th>解析方法</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>parse(String source)</td> <td>从给定字符串的开始解析文本以生成日期</td> </tr> </tbody> </table> **案例** > 例如: 将字符串 “2021年08月06日11点11分11秒” 转为日期对象 public class DateDemo4 { public static void main(String[] args) throws ParseException { String dateStr = "2021年08月06日11点11分11秒"; // 把字符串时间解析成日期对象 // 格式必须与被解析时间格式完全一样 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH点mm分ss秒"); Date d = sdf.parse(dateStr); System.out.println(d); // Fri Aug 06 11:11:11 CST 2021 } } ##### Calendar类 ##### **Calendar概述**: > Calendar代表了系统此刻日期对应的日历对象。 > > Calendar是一个**抽象类**,不能直接创建对象。 **Calendar日历类创建日历的方法** <table> <thead> <tr> <th>方法名</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>getInstance()</td> <td>获取当前日历对象</td> </tr> </tbody> </table> // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); > 直接打印日历对象cal, 会显示日历对象的所有字段 Calendar cal = Calendar.getInstance(); System.out.println(cal); **Calendar常用方法** <table> <thead> <tr> <th>方法名</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>get(int field)</td> <td>取日期中的某个字段信息。</td> </tr> <tr> <td>set(int field,int value)</td> <td>修改日历的某个字段信息。</td> </tr> <tr> <td>add(int field,int amount)</td> <td>为某个字段增加/减少指定的值</td> </tr> <tr> <td>getTime()</td> <td>拿到此刻日期对象。</td> </tr> <tr> <td>getTimeInMillis()</td> <td>拿到此刻时间毫秒值</td> </tr> </tbody> </table> > get方法获取日历中某个字段的信息, 可以获取年月日时分秒等等 public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); // 获取年月日... System.out.println(cal.get(Calendar.YEAR)); System.out.println(cal.get(Calendar.MONTH + 1)); System.out.println(cal.get(Calendar.DAY_OF_MONTH)); // 1月中第几天 System.out.println(cal.get(Calendar.DAY_OF_YEAR)); // 1年中第几天 } } > set方法修改日历中的某个字段 public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); // 获取年 System.out.println(cal.get(Calendar.YEAR)); // 2022 // 修改年 cal.set(Calendar.YEAR, 2019); System.out.println(cal.get(Calendar.YEAR)); // 2019 } } > add方法为某个字段增加/减少指定的值 public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); // 增加10年 cal.add(Calendar.YEAR, 10); // 增加20分钟 cal.add(Calendar.MINUTE, 20); System.out.println(cal.get(Calendar.YEAR)); // 2032 System.out.println(cal.get(Calendar.MINUTE)); // 31 } } > getTime方法拿到此刻日期对象。 public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); // 获取此刻日期对象 Date d = cal.getTime(); System.out.println(d); // Fri Oct 14 16:13:40 CST 2022 } > getTimeInMillis方法拿到此刻时间毫秒值 public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); // 获取此刻时间毫秒值 long time = cal.getTimeInMillis(); System.out.println(time); } [35d184c0826f459382c5bcaa495ae4fd.png_pic_center]: https://img-blog.csdnimg.cn/35d184c0826f459382c5bcaa495ae4fd.png#pic_center [090e820b64e24263b197003926b51f11.png_pic_center]: https://img-blog.csdnimg.cn/090e820b64e24263b197003926b51f11.png#pic_center
还没有评论,来说两句吧...