# 2. JDK 8 之前的日期时间 API

# 2.1 java.lang.System

# 2.1.1 currentTimeMillis()

//获取当前系统时间
System.currentTimeMillis()
  • 返回当前时间与 1970年1月1日0时0分0秒 之间以毫秒为单位的时间差 —— 时间戳

# 2.1.2 时间标准

  • UTC(Coordinated Universal Time)
  • GMT(Greenwich Mean Time)
  • CST(Central Standard Time)

# 2.2 java.util.Date

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

# 2.2.1 构造器

  • Date():返回当前时间
Date now = new Date();
System.out.println(now);
  • Date(Long date):返回时间戳表示的时间
Date date = new Date(1601881099234l);
System.out.println(date);

# 2.2.2 常用方法

  • getTime():返回自 1970年1月1日0时0分0秒 以来此 Date 对象表示的毫秒数
  • toString():如:Mon Oct 05 14:58:19 CST 2020

# 2.2.3 与 java.sql.Date 那点事

//创建 java.sql.Date 对象
java.sql.Date date = new java.sql.Date(1601881099234l);
System.out.println(date);//2020-10-05
//将 java.util.Date 对象转换为 java.sql.Date 对象
//情况一:怎么来的怎么回去
Date date1 = new java.sql.Date(1601881099234l);
java.sql.Date date2 = (java.sql.Date) date1;
System.out.println(date1);//2020-10-05
System.out.println(date2);//2020-10-05
//情况二:获取时间戳传给构造函数
Date date3 = new Date();
java.sql.Date date4 = new java.sql.Date(date3.getTime());
System.out.println(date3);//Mon Oct 05 15:13:29 CST 2020
System.out.println(date4);//2020-10-05

# 2.4 java.text.SimpleDataFormat

# 2.4.1 简介

Date 类的 API 不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

它允许进行:

  • 格式化:日期 -> 文本
  • 解析:文本 -> 日期

# 2.4.2 格式化

  • SimpleDateFormat() :默认的模式和语言环境创建对象
  • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern 指定的格式创建一个对象,该对象调用
  • public String format(Date date):格式化时间对象date

# 2.4.3 解析

  • public Date parse(String source):从给定字符串的开始解析文本,以生成 一个日期

# 2.4.4 实例

//默认格式化
Date date = new Date();
SimpleDateFormat sf1 = new SimpleDateFormat();
String format = sf1.format(date); 
System.out.println(format);     //20-10-5 下午3:20
//指定pattern进行格式化
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = sf2.format(date);
System.out.println(format1);    //2020-10-05 15:20:22
//解析
String dateStr = "2020-01-01 10:00:12";
Date parse = sf2.parse(dateStr);
System.out.println(parse);      //Wed Jan 01 10:00:12 CST 2020

# 2.5 Calendar

# 2.5.1 简介

Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

# 2.5.2 实例化

image-20201005152423172
  • Calander.getInstance()

    Calendar instance = Calendar.getInstance();
    System.out.println(instance);
    
    java.util.GregorianCalendar[time=1601882697124,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=279,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=24,SECOND=57,MILLISECOND=124,ZONE_OFFSET=28800000,DST_OFFSET=0]
    
  • GregorianCalendar()

    Calendar calendar = new GregorianCalendar();
    

# 2.5.3 常用方法

一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND。

1月是0,二月是1。

周日是1,周一是2。

  • public void set(int field,int value):将某个域(如时、分、秒)设置为特定的值
  • public void add(int field,int amount) :将某个域的值加一个值
  • public final Date getTime():获得时间,返回一个 Date 对象
  • public final void setTime(Date date):根据一个 Date 对象设置时间

# 2.5.4 实例

Calendar calendar = new GregorianCalendar();
Date date = new Date();
System.out.println(date);          //Mon Oct 05 15:34:02 CST 2020
//根据 Date 对象设置时间
calendar.setTime(date);
//更改某个域的值
calendar.set(Calendar.YEAR,1999);  //Tue Oct 05 15:33:32 CST 1999
//获取 Date 对象
Date time = calendar.getTime();
System.out.println(time);
//上面的时间加2小时
calendar.add(Calendar.HOUR_OF_DAY,2);
Date time1 = calendar.getTime();
System.out.println(time1);         //Tue Oct 05 17:34:02 CST 1999
上次更新: 8/27/2021, 5:57:47 PM