欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

(Java常用类)日期时间类

发布时间:2025/3/20 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 (Java常用类)日期时间类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • Date类
      • 概述
      • 常用方法
      • 代码演示
    • DateFormat类
      • 构造方法
      • 格式规则
      • 常用方法
      • 代码演示
    • Calendar类
      • 概念
      • 获取方式
      • 常用方法
        • get/set方法
        • add方法
        • getTime方法
      • 代码演示

Date类

概述

java.util.Date类 表示特定的瞬间,精确到毫秒。

继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。

简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。例如:

import java.util.Date;public class Demo01Date {public static void main(String[] args) {// 创建日期对象,把当前的时间System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018// 创建日期对象,把当前的毫秒值转成日期对象System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970} }

常用方法

Date类中的多数方法已经过时,常用的方法有:

  • public long getTime() 把日期对象转换成对应的时间毫秒值。

代码演示

public class Demo01Date {public static void main(String[] args) {demo01();demo02();demo03();}/*Date类的成员方法Long getTime()把日期转换为毫秒相对于原点1970.1.1 08:00:00*/private static void demo03() {Date date = new Date();long time = date.getTime();System.out.println("Date的成员方法getTime:");System.out.println(time);}/*Date类带参构造方法:Date(long date):将毫秒值转换为日期 - 相对于原点1970.1.1 08:00:00*/private static void demo02() {Date d1 = new Date(0L);//日期原点,1970.1.1Date d2 = new Date(666666666L);System.out.println("Date类有参构造方法:");System.out.println(d1);System.out.println(d2);}/*Date类空参构造方法:Date()获取当前系统的日期和时间*/private static void demo01() {System.out.println("Date类空参构造方法:");Date d1 = new Date();System.out.println(d1);}}

DateFormat类

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,从Date对象转换为String对象。
  • 解析:按照指定的格式,从String对象转换为Date对象。

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

参数pattern是一个字符串,代表日期时间的自定义格式。

格式规则

常用的格式规则为:

标识字母(区分大小写)含义
y
M
d
H
m
s

备注:更详细的格式规则,可以参考SimpleDateFormat类的API文档0。

常用方法

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。
  • public Date parse(String source):将字符串解析为Date对象。

代码演示

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Demo02DateFormat {public static void main(String[] args) {demo01();demo02();}/*使用DateFromat类中的方法parse,把文本转换为日期Date parse() 把符合模式的字符串转换为日期*/private static void demo02() {System.out.println("---------------------demo02-----------------------");//1.创建SimpleDateFormat 对象,构造方法中传递指定的参数SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String text = "2020-05-20 22:01:43";//2.调用parse方法,按照指定模式将文本转换为日期/*public Date parse(String source) throws ParseException 由于parse方法声明了一个异常,所以在调用时必须处理这个异常* */try {Date date = sdf.parse(text);System.out.println(date);} catch (ParseException e) {e.printStackTrace();}}/*使用DateFromat类中的方法format,把日期格式化为文本String format(Date date) 按照指定的模式,把date日期格式化为符合模式的字符串*/private static void demo01() {System.out.println("---------------------demo01-----------------------");//1.创建SimpleDateFormat 对象,构造方法中传递指定的参数SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//2.调用SimpleDateFormat对象中的format方法,按照构造方法中的参数模式,把date转换为指定模式的文本Date date = new Date();String text = sdf.format(date);System.out.println("日期未转换为指定模式的文本之前:");System.out.println(date);System.out.println("日期转换为指定模式的文本之后:");System.out.println(text);} }

Calendar类

概念

日历我们都见过

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2bhR4PX-1590070230265)(img\日历.jpg)]

java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

获取方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:

Calendar静态方法

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历

例如:

import java.util.Calendar;public class Demo06CalendarInit {public static void main(String[] args) {Calendar cal = Calendar.getInstance();} }

常用方法

根据Calendar类的API文档,常用方法有:

  • public int get(int field):返回给定日历字段的值。
  • public void set(int field, int value):将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

Calendar类中提供很多成员常量,代表给定的日历字段:

字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR时(12小时制)
HOUR_OF_DAY时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK周中的天(周几,周日为1,可以-1使用)

get/set方法

get方法用来获取指定字段的值,set方法用来设置指定字段的值

add方法

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。

getTime方法

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象。

代码演示

import java.util.Calendar; import java.util.Date;public class Demo01Calendar {public static void main(String[] args) {demo01();demo02();demo03();demo04();}/*public final Date getTime() :返回一个表示此Clendar的时间值的Date对象把日历对象转换为日期对象*/private static void demo04() {System.out.println("-----------------------demo04----------------------");Calendar c = Calendar.getInstance();//把日历对象转换为日期对象Date date = c.getTime();System.out.println(date);}/*public abstract void add(int field, int amount):根据日历的规则,为给定的字段添加或减去指定的时间量参数:int field:传递指定的字段(YEAR,MONTH,DATE....)int amount:增加/减少的值正数:增加负数:减少*/private static void demo03() {System.out.println("-----------------------demo03----------------------");Calendar c = Calendar.getInstance();//年份+2c.add(Calendar.YEAR,2);//月份-2c.add(Calendar.MONTH,-2);//日+5c.add(Calendar.DATE,5);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+(month+1)+"月"+date+"日");}/*public void set(int field, int value):将指定的日历字段设定为给定值参数:int field:传递指定的日历字段(YEAR,MONTH,DATE.....)int value:设置传递的字段的具体值*/private static void demo02() {System.out.println("-----------------------demo02----------------------");Calendar c = Calendar.getInstance(); // //设置年为6666 // c.set(Calendar.YEAR,6666); // //设置月为6 // c.set(Calendar.MONTH,6); // //设置日为6 // c.set(Calendar.DATE,6);//使用set的重载方法同时设置年月日c.set(6666,6,6);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+month+"月"+date+"日");}/*public int get(int field):返回给定日历字段的值参数:传递指定的日历字段(YEAR,MONTH,DATE......)返回值:日历字段代表具体的值*/private static void demo01() {System.out.println("-----------------------demo01----------------------");//由于Calendar是个抽象类,所以使用getInstance()方法获取Clendar对象Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);//由于西方的月份是0-11,所以要+1int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+(month+1)+"月"+date+"日");} }

总结

以上是生活随笔为你收集整理的(Java常用类)日期时间类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。