Java中时间日期相关类Date、DateFormat、Calendar、System等

293 阅读5分钟

(Java中时间日期相关类Date、DateFormat、Calendar、System)

一、Date(java.util.Date)

1. 概念

  • 表示特定的时刻,精度为毫秒
  • 瞬间可以用毫秒值表示,该值是1970年1月1日格林威治标准时间1970年1月1日00:00:00,000(格里高利)的Epoch的偏移量。
  • 一些计算机标准是根据格林威治标准时间(GMT)定义的,相当于通用时间(UT)。

2. 构造方法

  1. Date() 分配 Date对象并对其进行初始化,使其表示分配当前环境下的时间,测量 Date到毫秒
  2. Date​(long date) 分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
  3. Date​(int year, int month, int date) 根据年月日建立Date对象 year - 减去1900年的年份。 month - 0-11之间的月份。 date - 1-31之间的当月日期。
  4. 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之间的秒数。
  5. public Date​(String s)

3.常用方法

  1. getTime() 返回自此 Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数
  2. setTime​(long time) 将此 Date对象设置为表示格林尼治标准时间1970年1月1日00:00:00之后的 time毫秒的时间点。
  3. toString() 将此 Date对象转换为某形式(Sat Dec 25 15:20:00 CST 2021)的 String
  4. 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.常用方法

  1. String format(Date date):方法格式化时间对象date
  2. 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.构造方法

  1. Calendar.getInstance() 使用默认时区和区域设置获取日历对象
  2. Calendar​(TimeZone zone, Locale aLocale) 构造具有指定时区和区域设置的日历。
  3. 子类GregorianCalandar 调用子类GregorianCalendar的构造器

4.常用方法

  1. getInstance​(Locale aLocale) 使用默认时区和指定的区域设置获取日历。
  2. getInstance​(TimeZone zone, Locale aLocale) 获取具有指定时区和区域设置的日历。
  3. set(int field, int value) 将给定的日历字段设置为给定值。
  4. get(int field) YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY、MINUTE、SECOND等属性获取时间信息
  5. add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
  6. roll​(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
  7. getTime 获取日历时间表示的Date对象
  8. getTimeInMillis() 以毫秒为单位返回此Calendar的时间值
  9. getTimeZone() 获取时区
  10. getActualMaxnum 获取最大值

5.注意

获取月份:一月是0....12月是11,以此类推 获取星期:周日是1....周六是7

四、System类(java.lang.System)

1.概念

  • System类包含几个有用的类字段和方法。 它无法实例化。
  • 提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。

2.字段

  1. static PrintStream err “标准”错误输出流。
  2. static InputStream in “标准”输入流。
  3. static PrintStream out “标准”输出流。

3.常用方法

  1. System.currentTimeMillis() 用来返回当前时间与1970.1.1.0:0:0之间的毫秒差值** UTC、GMT、CST
  2. arraycopy​(Object src, int srcPos, Object dest, int destPos, int length) 将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。
  3. exit​(int status) 终止当前运行的java虚拟机
  4. gc() 运行垃圾收集器
  5. getProperties() 确定当前系统属性
  6. getProperty​(String key) 获取指定键的系统属性

java.version:java运行环境版本 java.home:java安装目录 os.name:操作系统名 os.version:操作系统版本 user.name:用户账户名称 user.home:用户主目录 user.dir:用户当前工作目录

  1. getLogger​(String name) 返回Logger的实例以供调用者使用。
  2. setErr​(PrintStream err) 重新分配“标准”错误输出流。
  3. setIn​(InputStream in) 重新分配“标准”输入流。
  4. setOut​(PrintStream out) 重新分配“标准”输出流。