(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常用类)日期时间类的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: (Java常用类)Object类
- 下一篇: (Java)ArrayList集合