# 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 实例化
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