Date类表示的是特定的,瞬间的,它能精确毫秒。
Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。
1. 构造方法
Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数。
Date 类的无参数构造方法获取的是系统当前的时间,显示的顺序为星期、月、日、小时、分、秒、年。
Date 类带 long 类型参数的构造方法获取的是距离 GMT 指定毫秒数的时间,60000 毫秒是一分钟,而 GMT(格林尼治标准时间)与 CST(中央标准时间)相差 8 小时,也就是说 1970 年 1 月 1 日 00:00:00 GMT 与 1970 年 1 月 1 日 08:00:00 CST 表示的是同一时间。
因此距离 1970 年 1 月 1 日 00:00:00 CST 一分钟的时间为 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 对象表示为 Thu Jan 01 08:01:00 CST 1970。
2. 常用方法
Date 类提供了许多与日期和事件相关的方法,其中常见的方法如表 1 所示。
Calendar 类
Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。
创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
Calendar 对象可以调用 set() 方法将日历翻到任何一个时间,当参数 year 取负数时表示公元前。Calendar 对象调用 get() 方法可以获取有关年、月、日等时间信息,参数 field 的有效值由 Calendar 静态常量指定。
Calendar 类中定义了许多常量,分别表示不同的意义。
Calendar.YEAR:年份。
Calendar.MONTH:月份。
Calendar.DATE:日期。
Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
Calendar.HOUR:12小时制的小时。
Calendar.HOUR_OF_DAY:24 小时制的小时。
Calendar.MINUTE:分钟。
Calendar.SECOND:秒。
Calendar.DAY_OF_WEEK:星期几。
如果整型变量 month 的值是 0,表示当前日历是在 1 月份;如果值是 11,则表示当前日历在 12 月份。
long currentTimeMillis = System.currentTimeMillis(); Date date=new Date(currentTimeMillis); System.out.println(date); System.out.println(new Date()); DateFormat df=DateFormat.getInstance(); System.out.println(df.format(new Date())); DateFormat dateFormat=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒"); System.out.println(dateFormat.format(new Date())); Date date1=new Date(); long time = date1.getTime(); Calendar calendar=Calendar.getInstance(); calendar.set(2049,10,1); long timeInMillis = calendar.getTimeInMillis(); long l = (timeInMillis - time) / (1000 * 60 * 60 * 24); System.out.println("距离2050年10月1日"+l+"天");
Date型与 Calendar型转化
Date型转换为Calendar型Calendar cal = Calendar.getInstance();//取得当前时间Calendar类型
cal.setTime(date); //Date转Calendar
Calendar型转换为Date型Calendar cal = Calendar.getInstance();//取得当前时间Calendar类型
Date cal2date = cal.getTime();//Calendar转Date
Java 接收 MySQL datetime 类型日期字段输出格式问题
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency>
@JsonFormat(pattern = "yyyy 年 MM 月 dd天 HH 时 mm 分 ss 秒") private Date createTime;