Java学习——日期类
摘要:本文主要记录了Java开发中用到的和日期有关的类以及对日期的操作。
部分内容来自以下博客:
https://www.cnblogs.com/talk/p/2680591.html
概述
日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题。
java.util.Date
Date类表示特定的瞬间,精确到毫秒。从JDK1.1开始,应该使用Calendar类实现日期和时间字段之间转换,使用DateFormat类来格式化和分析日期字符串。Date中的把日期解释为年、月、日、小时、分钟和秒值的方法已废弃。
构造方法
Date():分配Date对象并用当前时间初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年01月01日 00:00:00 GMT)以来的指定毫秒数。
java.text.DateFormat
DateFormat类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为Date对象,或者表示为从 GMT(格林尼治标准时间)1970年01月01日 00:00:00这一刻开始的毫秒数。
DateFormat不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须保持外部同步。
java.text.SimpleDateFormat
SimpleDateFormat类是一个以与语言环境相关的方式来格式化和分析日期的具体类。
SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat中的getTimeInstance、getDateInstance或getDateTimeInstance来新的创建日期-时间格式化程序。
格式化字段含义
、
格式化说明
将Date转化为常见的日期时间字符串
1 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 2 System.out.println(dateFormat.format(new Date()));
将文本日期转化为Date
1 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 2 Date date = null; 3 try { 4 date = dateFormat.parse("2019-01-01 01:30:28"); 5 } catch (ParseException e) { 6 e.printStackTrace(); 7 } 8 System.out.println(date);
java.util.Calendar
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970年01月01日的00:00:00.000,格里高利历)的偏移量。
与其他语言环境敏感类一样,Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。
常用方法
getInstance():公有静态方法,用于获取Calendar的实例。
set(int field, int value):设置日历的年月日时分秒。
get(int field):获取日历的年月日时分秒。
setTime(Date date):设置给定的日期。
getTime():获取日期。
add(int field, int amount):按照日历的规则,给指定字段添加或减少时间量。
getTimeInMillies():以毫秒为单位返回该日历的时间值。
java.util.GregorianCalendar
GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家是在1582年10月15日创立,在其他国家要晚一些)。可由调用方通过调用setGregorianChange()来更改起始日期。