(Java中时间日期相关类Date、DateFormat、Calendar、System)
一、Date(java.util.Date)
1. 概念
- 表示特定的时刻,精度为毫秒
- 瞬间可以用毫秒值表示,该值是1970年1月1日格林威治标准时间1970年1月1日00:00:00,000(格里高利)的Epoch的偏移量。
- 一些计算机标准是根据格林威治标准时间(GMT)定义的,相当于通用时间(UT)。
2. 构造方法
- Date() 分配 Date对象并对其进行初始化,使其表示分配当前环境下的时间,测量 Date到毫秒
- Date(long date) 分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
- Date(int year, int month, int date) 根据年月日建立Date对象 year - 减去1900年的年份。 month - 0-11之间的月份。 date - 1-31之间的当月日期。
- Date(int year,int month,int date, int hrs,int min,int sec) year - 减去1900年的年份。 month - 0-11之间的月份。 date - 1-31之间的一天中的某一天。 hrs - 0-23之间的小时数。 min - 0-59之间的分钟。 sec - 0-59之间的秒数。
- public Date(String s)
3.常用方法
- getTime() 返回自此 Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数
- setTime(long time) 将此 Date对象设置为表示格林尼治标准时间1970年1月1日00:00:00之后的 time毫秒的时间点。
- toString() 将此 Date对象转换为某形式(Sat Dec 25 15:20:00 CST 2021)的 String
- after(Date when)/before(Date when) 判断会否在此时间的后面或者前面
二、DateFormat(java.text.DateFormat)
1.概念
- DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化和分析日期或时间。
- 日期/时间格式化子类(例如SimpleDateFormat )允许格式化(即,日期→文本),解析(文本“日期”)和规范化。
- 使用java.text.SimpleDateFormat,它是DateFormat的子类
- java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类
2.构造方法
创建 SimpleDateFormat(String pattern)对象:用pattern指定格式创建对象。
Date date = new Date("2021/12/25 15:20");
System.out.println(date.toString());
DateFormat format = new SimpleDateFormat("YYYY年MM月dd日 hh:mm ss");
String ff = format.format(date);
3.常用方法
- String format(Date date):方法格式化时间对象date
- public Date parse(String source):从给定字符串开始解析文本,来生成一个日期
三、Calendar日期类(java.util.Calendar)
1.概念
- 解决Date不能国际化的问题
- Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
2.属性
AM、AM_PM DATE DAY_OF_YEAR、DAY_OF_MONTH、DAY_OF_WEEK HOUR等
3.构造方法
- Calendar.getInstance() 使用默认时区和区域设置获取日历对象
- Calendar(TimeZone zone, Locale aLocale) 构造具有指定时区和区域设置的日历。
- 子类GregorianCalandar 调用子类GregorianCalendar的构造器
4.常用方法
- getInstance(Locale aLocale) 使用默认时区和指定的区域设置获取日历。
- getInstance(TimeZone zone, Locale aLocale) 获取具有指定时区和区域设置的日历。
- set(int field, int value) 将给定的日历字段设置为给定值。
- get(int field) YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY、MINUTE、SECOND等属性获取时间信息
- add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
- roll(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
- getTime 获取日历时间表示的Date对象
- getTimeInMillis() 以毫秒为单位返回此Calendar的时间值
- getTimeZone() 获取时区
- getActualMaxnum 获取最大值
5.注意
获取月份:一月是0....12月是11,以此类推 获取星期:周日是1....周六是7
四、System类(java.lang.System)
1.概念
- System类包含几个有用的类字段和方法。 它无法实例化。
- 提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。
2.字段
- static PrintStream err “标准”错误输出流。
- static InputStream in “标准”输入流。
- static PrintStream out “标准”输出流。
3.常用方法
- System.currentTimeMillis()
用来返回当前时间与1970.1.1.0:0:0之间的毫秒差值**
UTC、GMT、CST - arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。
- exit(int status) 终止当前运行的java虚拟机
- gc() 运行垃圾收集器
- getProperties() 确定当前系统属性
- getProperty(String key) 获取指定键的系统属性
java.version:java运行环境版本 java.home:java安装目录 os.name:操作系统名 os.version:操作系统版本 user.name:用户账户名称 user.home:用户主目录 user.dir:用户当前工作目录
- getLogger(String name) 返回Logger的实例以供调用者使用。
- setErr(PrintStream err) 重新分配“标准”错误输出流。
- setIn(InputStream in) 重新分配“标准”输入流。
- setOut(PrintStream out) 重新分配“标准”输出流。