目录
参考链接
实例化
java.util.Date 类封装了当前的日期和时间,实例化一个日期时间对象的语法如下:
Date date = new Date([millisec])
其中,可选参数 millisec 表示1970年1月1日起的毫秒数。
示例代码:
import java.util.*;public class DateClass {public static void main(String[] args) {Date date = new Date();System.out.println(date.toString()); // "Sat Jun 16 12:27:53 CST 2018"}}
日期获取与设置
获取
date.getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数;date.toString(): 将 Date 对象转换为类似”Sat Jun 16 12:27:53 CST 2018”的日期字符串。
示例代码:
import java.util.*;public class DateClass {public static void main(String[] args) {Date date = new Date();System.out.println(date.getTime()); // 1529123707579System.out.println(date.toString()); // "Sat Jun 16 12:35:07 CST 2018"}}
设置
自定义日期用到了date.setTime(millisec),millisec 是一个毫秒数,date 转化为=毫秒值后再加上 millisec,就是要设置的日期了。
示例代码:
import java.util.*;public class DateClass {public static void main(String[] args) {Date date = new Date();long millisec = date.getTime();System.out.println(date.toString()); // "Sat Jun 16 12:42:55 CST 2018"date.setTime(millisec + (7 * 24 * 60 * 60 * 1000)); // 当前日期加上7天时长System.out.println(date.toString()); // "Sat Jun 23 12:42:55 CST 2018"}}
日期比较
日期比较用到了以下4个方法:
date1.before(date2): date1 在 date2 之前就返回 true,否则返回 false;date1.after(date2): date1 在 date2 之后就返回 true,否则返回 false;date1.equals(date2): date1 与 date2 相等就返回 true,否则返回 false;date1.compareTo(date2): 如果 date1 在 date2 之前,就返回负数,之后就返回正数,相等就返回0。
示例代码:
import java.util.*;public class DateClass {public static void main(String[] args) {Date date1 = new Date();Date date2 = new Date(date1.getTime() + 1000);Date date3 = new Date(date1.getTime() - 1000);Date date4 = new Date();System.out.println(date1.before(date2)); // trueSystem.out.println(date1.after(date3)); // trueSystem.out.println(date1.equals(date4)); // trueSystem.out.println(date1.compareTo(date2)); // -1System.out.println(date1.compareTo(date3)); // 1System.out.println(date1.compareTo(date4)); // 0}}
SimpleDateFormat类
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
format方法
format 方法用于格式化日期时间。
示例代码:
import java.util.*;import java.text.*;public class DateClass {public static void main(String[] args) {Date date = new Date();SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a E");System.out.println(ft.format(date)); // "2018-06-16 14:03:54 下午 星期六"}}
日期和时间的格式化编码如下表:
| 字母 | 描述 |
|---|---|
| * | 任意类型,即不限制 |
| G | 纪元标记 |
| y | 四位年份 |
| M | 月份 |
| d | 一个月的日期 |
| h | A.M./P.M. (1~12)格式小时 |
| H | 一天中的小时(0~23) |
| m | 分钟数 |
| s | 秒数 |
| S | 毫秒数 |
| E | 星期几 |
| D | 一年中的日子 |
| F | 一个月中第几周的周几 |
| w | 一年中第几周 |
| W | 一个月中第几周 |
| a | A.M./P.M. 标记 |
| k | 一天中的小时(1~24) |
| K | A.M./P.M. (0~11)格式小时 |
| z | 时区 |
| ‘ | 文字定界符 |
| “ | 单引号 |
注意,系统环境的不同,有些日期数据,比如星期(E)、上/下午标记(a)等的显示也会不同,中文系统中会显示成中文,linux 系统中则都是显示英文。
parse方法
parse 方法会把给定的时间模式字符串转换成日期字符串,用法如下:
import java.util.*;import java.text.*;public class DateClass {public static void main(String[] args) {SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");try {System.out.println(ft.parse("2018-06-16")); // "Sat Jun 16 00:00:00 CST 2018"} catch (ParseException e) {// TODO}}}
注意,parse 必须放在try catch,否则会报错。
Calendar类
Calendar 类用于设置和获取日期数据的特定部分(年份、月份、小时等等)。创建一个 Calendar 实例的语法如下:
Calendar cl = Calendar.getInstance(timeParams...)
用这种方法产生的是一个 GregorianCalendar 对象,所以也可以写成以下形式:
GregorianCalendar cl = new GregorianCalendar(timeParams...)
其中,timeParams(可选) 是一个或多个参数,用于设置 GregorianCalendar 对象的初始时间,默认获取的是当前时间。
时间常量
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 | 星期几 |
获取时间
cl.get(field): 获取指定字段(时间常量)的时间值;cl.getTime(): 获取日历的当前时间。
示例代码:
import java.util.*;import java.text.*;public class DateClass {public static void main(String[] args) {GregorianCalendar cl = new GregorianCalendar();System.out.println(cl.get(Calendar.YEAR)); // 2018System.out.println(cl.getTime()); // "Sat Jun 16 15:51:20 CST 2018"}}
设置时间
cl.set(field, val): 将 field 代表的时间值设置为 val 值;cl.setTime(date): 将一个 Date 对象设置为时间值。
示例代码如下:
import java.util.*;import java.text.*;public class DateClass {public static void main(String[] args) {Date date = new Date((new Date()).getTime() + (24 * 60 * 60 * 1000));GregorianCalendar cl = new GregorianCalendar();cl.set(Calendar.YEAR, 1995);System.out.println(cl.getTime()); // "Fri Jun 16 16:03:43 CST 1995"cl.setTime(date);System.out.println(cl.getTime()); // "Sun Jun 17 16:03:43 CST 2018"}}
时间运算
cl.add(field, amount): 将 field 代表的时间值增加 amount 值;cl.roll(field, ifUp): 在给定的 field 上添加或减去(上/下)单个时间单元,不更改更大的字段,第二个参数 ifUp 设为 true 表示”加”,设为 false 表示”减”。
示例代码:
import java.util.*;import java.text.*;public class DateClass {public static void main(String[] args) {GregorianCalendar cl = new GregorianCalendar();System.out.println(cl.getTime()); // "Sat Jun 16 16:13:25 CST 2018"cl.add(Calendar.YEAR, 1);System.out.println(cl.getTime()); // "Sun Jun 16 16:13:25 CST 2019"cl.roll(Calendar.MONTH, false);System.out.println(cl.getTime()); // "Thu May 16 16:13:25 CST 2019"}}
ID : 81DATE : 2018/06/16AUTHER : WJT20TAG : Java
