Java 时间类

时间:2023-11-23 08:04:43

1.System 类  2.Date 类  3.SimpleDateFormate 类  4.Calendar 类  


1.System 类

  得到当前的时间值。System 类不能被实例化,需要通过它的静态方法调用。

  使用System类 currentTimeMillis() 方法,获取当前系统时间。返回以毫秒为单位的时间,值的粒度取决于底层操作系统。返回值类型:long

long currentTime = System.currentTimeMillis();

2.Date

  时间类,可以获取到一个时间类型的对象。可以使用该类提供的方法,设置一个想要得到的 Date 类型;同时可以得到一个时间类型信息的绝对时间值。

2.1.构造方法

  类 Date 表示特定的瞬间,精确到毫秒。

Date 类的构造方法

格式

参数列表

说明

示例

new Date()

空参

获取到一个表示当前系统时间的对象

Mon Jul 02 20:19:48 CST 2018

Date(long Date)

long 类型整数,以毫秒计的绝对时间

   
  • 空参获取当前时间,指定 long 类型整数获取 该整数 对应的时间点
System.out.println((new Date())); // 打印当前系统时间
System.out.println(new Date(0)); // 打印绝对时间为 0 的时间点信息
System.out.println(new Date(-3600 * 1000 * 24)); // 打印绝对时间前一天 的时间点信息

2.2.常用方法

Date 类的常用方法

方法格式

说明

 public long getTime()  返回绝对时间
 public void setTime(long time)  以绝对时间重置对象

3.SimpleDateFormat

  • 两类处理
    • 格式化:  -  使时间信息可读性更好
    • 解析:  -  便于计算
构造方法

格式

参数列表

说明

 SimpleDateFormat()    直接创建空模式对象(使用默认模式)
 SimpleDateFormat(String pattern)  通过 pattern 指定“格式化 / 解析”时间显示格式  创建对象时,顺带指定匹配模式
  • pattern

    pattern 是一串字符串,由元字符构造。用来指定时间信息显示格式。

pattern 模式

元字符

说明

举例

 y  年

yyyy年MM月dd日

HH:mm:ss SSS

a hh:mm

 M  年中的月份
 d  月份中的天数
 a  AM / PM 标记
 H  一天中的小时数(0-23)
 h  一天中的小时数(1-12)
 m  小时中的分钟数
 s  分钟中的秒数
 S  毫秒数
  • 常用方法
常用方法

处理

格式

说明

格式化  String format(Date date)  把 Date 类的时间信息以 指定格式输出
解析  Date parse(String source)  解析字符串

示例:常用用法

String arg1 = new SimpleDateFormat("y-MM-dd").format(new Date());
Date arg2 = new SimpleDateFormat("y-MM-dd").parse("arg1");

3.1.格式化输出

  • 按照指定模式显示时间信息
SimpleDateFormat sdf = new SimpleDateFormat();

String year = "yyyy年"; // 指定模式
String mon = "MM月";
String day = "dd日";
Date date = new Date(); sdf.applyPattern(year); // 切换对象的匹配模式
System.out.println(sdf.format(date)); //如:2013年
sdf.applyPattern(mon);
System.out.println(sdf.format(date)); //如:07月
sdf.applyPattern(day);
System.out.println(sdf.format(date)); //如:01日

  输出完整的时间信息(2038年05月15日  下午 04:14)

String pattern = "yyyy年MM月dd日  a hh:mm";
sdf.applyPattern(pattern); // 切换模式匹配
System.out.println(sdf.format(date)); // 输出时间信息

  输出完整的时间信息(2038年5月15日  下午 4:16)

String pattern = "y年M月d日  a h:m";

  输出完整的时间信息(时间以24小时格式显示)

String pattern = "y年M月d日 H:m";
  • 在创建对象时,可以修改默认匹配模式

  在创建对象时指定了匹配模式,对象的使用过程中一样可以修改匹配模式

String pattern = "y年M月d日 H:m";
SimpleDateFormat sdf = new SimpleDateFormat(pattern); pattern = "y年M月d日";
sdf.applyPattern(pattern); // 切换匹配模式
date = new Date(); // 获取当前时间
System.out.println(sdf.format(date)); // 输出日期信息

3.2.解析时间字符串

  解析时间的时候,时间字符串的模式必须要匹配模式 pattern

SimpleDateFormat sdf = new SimpleDateFormat();

String pattern = "y年M月d日 H:m";
sdf.applyPattern(pattern);
Date date = sdf.parse("2038年5月15日 4:16");

在解析时间字符串时,要是模式中日期与时间之间有空白字符,解析的字符串需要严格匹配。

4.Calendar

  该类为操作日历字段,提供了一些方法。

  这是一个抽象类,构造对象时,可以使用其提供的一个静态方法得到该类的通用对象。该方法获取当前时间

Calendar cal = Calendar.getInstance(); // 获取一个当前时刻的 Calendar类 时间
  • 常用方法
 

操作方法格式

参数

返回值

说明

获取  public int get(int field) 日历字段,是一个枚举数字 日历对应的字段信息 获取指定字段的值
   public final Date getTime()   返回该类的 Date 对象  
修改  public abstract void add(int field, int amount) 偏移量可以是个负值 修改指定的日历字段,增加amount
清除  public final void clear()     所有日历字段、时间值设置成未定义
   public final void clear(int field)     指定字段设定为 未定义
设置  public void set(int field, int value)     设置字段
   public final void setTime(Date date)     使用Date值设置Calendar值

4.1.日历字段值

  • 获取日历字段值:
System.out.println(Calendar.YEAR); // 1
System.out.println(Calendar.MONTH); // 2,月份的表示从0开始的;0代表的是1月
System.out.println(Calendar.DAY_OF_MONTH); // 5 System.out.println("" + cal.get(1) + cal.get(2) + cal.get(5)); // 直接输出时月份少了一个月
  • 获取时间字段值:
System.out.println(Calendar.HOUR_OF_DAY); //
System.out.println(Calendar.HOUR); //
System.out.println(Calendar.MINUTE); //
System.out.println(Calendar.SECOND); //
System.out.println(Calendar.MILLISECOND); // System.out.println(cal.get(Calendar.HOUR_OF_DAY)); // 0-23格式小时
System.out.println(cal.get(Calendar.HOUR)); // 1-12格式小时
System.out.println(cal.get(Calendar.MINUTE)); // 分钟
System.out.println(cal.get(Calendar.SECOND)); // 秒
System.out.println(cal.get(Calendar.MILLISECOND)); // 毫秒