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) 重新分配“标准”输出流。