文章目录
一、System.currentTimeMillis()
- 返回当前时间与1970年1月1号0时0分0秒之间毫秒为单位的时间戳
// 一个单元测试:测试System.currentTimeMillis()
@Test
public void test1(){
long l = System.currentTimeMillis();
System.out.println(l);
}
// 运行结果:
1622292157466
二、java.util.Date
1. 两个构造器
Date():创建一个对应时间的对象
public void test2(){
// 构造器一的测试 Date();
Date date = new Date(); // 创建了一个对应当前时间的Date对象
System.out.println("date = " + date);
System.out.println("date.getTime() = " + date.getTime()); //调用getTime()方法返回对象的时间戳值
}
// 运行结果:
date = Sat May 29 20:45:45 CST 2021
date.getTime() = 1622292345957
Date(long):创建一个指定时间戳的Date对象
public void test3(){
// 构造器二测试:创建一个指定时间戳的Date对象
Date date = new Date(1622269035440L); // 将一个时间戳作为参数传递给Date的构造器
System.out.println(date);
}
// 运行结果
Sat May 29 14:17:15 CST 2021
2. 两个方法
- toString()方法
- 显示Date对象所表示的年、月、日、时、分、秒
- getTime()方法
- 获取Date对应的时间戳
三、java.sql.Date
- java.sql.Date对应着数据库中的日期类型的变量
- 构造器:将一个时间戳作为参数传递给java.sql.Date的构造器
@Test
public void test4(){
// 创建java.sql.Date对象
java.sql.Date date = new java.sql.Date(1622269035440L);
System.out.println(date ); // 2021-05-29
}
- 主要方法:
- 同util.Date,toString()和getT
四、java.util.Date与java.sql.Date的转化
- 将sql.Date转化成util.Date
- 调用sql.Date的getTime()得到的毫秒值作为参数传递给util.Date类的构造器
public void test5(){
// 创建java.sql.Date对象
java.sql.Date date = new java.sql.Date(1622269035440L);
System.out.println(date ); // 2021-05-29
// 将sql.Date转化成util.Date
long time = date.getTime();
Date util_Date = new Date(time);
System.out.println("util_Date = " + util_Date);
}
- 将util.Date转化成sql.Date
- 同上
四、格式化日期类SimpleDateFormat
- 它是一个不与语言环境有关的方式来格式化和解析日期的具体类
- 它允许格式化:日期->文本、解析; 文本->日期
1. 构造器
-
SimpleDateFormat(): 默认的模式和语言环境创建对象
-
public SimpleDateFormat(String pattren):该方法构造方法可以用参数pattern指定的格式创建一个对象
- 使用指定格式创建的对象可以按指定的格式对日期进行格式化/解析
- 指定格式需要遵循JDK内中的规定的符号进行组合设置
- 开发中通常采用的格式: HH表示使用 24小时制,hh表示使用12小时制
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
- 使用JDK中规定的字符,可以指定想要的日期格式。例如:如果想用五位数字表示年份可以使用"yyyyy"。
@Test
public void test5(){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyy");
Date date = new Date();
String str = dateFormat.format(date);
System.out.println(str); // 年份为02021
}
2. 格式化
- 通过调用SimpleDateFormat对象的format()将日期对象转换成为指定的日期字符串格式
将日期对象转换成指定字符串格式的步骤:
- 将指定格式字符串作为参数传递给SimpleDateFormat从而创建一个SimpleDateFormat对象
- 调用format()方法将Date对象作为参数进行格式化,返回一个指定格式的字符串
3. 解析
- 通过调用SimpleDateFormat对象的parse()将符合指定格式的字符串转换成对应的日期
- 如果指定的格式不符合规定则会抛出ParseException异常
将字符串日期转换成指定格式的Date对象步骤:
- 将指定格式字符串作为参数传递给SimpleDateFormat从而创建一个SimpleDateFormat对象
- 调用format()方法将Date对象作为参数进行格式化,返回一个指定格式的字符串
字符串与Date对象之间的格式化和解析:
@Test
public void test3() throws ParseException {
// 使用SimpleDateFormat其他的构造器进行执行形式的格式化和解析
/***********************************格式化***********************************/
Date date = new Date();
// 开发中通常采用的格式: HH表示使用 24小时制,hh表示使用12小时制
// SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
// jdk源码注释中提供的一种示例:
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String date1 = dateFormat1.format(date);
String date2 = dateFormat2.format(date);
System.out.println(date1);
System.out.println(date2);
/***********************************解析***********************************/
// 将字符串形式的日期格式化为Date对象,这里要求字符串对象的格式必须是~
// ~创建SimpleDateFormat对象可以识别的格式(在构造SimpleDateFormat对象时通过构造器实现)
Date strDate = dateFormat1.parse(date1);
System.out.println("strDate = " + strDate);
}
五、Calendar日历类
- Calendar是一个抽象类,因此不能直接创建其对象,通过get方法可以得到想要的日期信息
1. 实例化
- 调用子类GregorianCalendar的构造器
GregorianCalendar gregorianCalendar = new GregorianCalendar();
- 使用
Calendar.getInstance()得到一个Calendar实例化的对象
- 调用此方法返回的依旧是Calendar的子类GregorianCalendar
2. 常用方法
- get():通过Calendar的成员变量获取一些常用信息
- set():通过成员变量改变日历上的当前时间
public void test1() {
Calendar instance = Calendar.getInstance(); // getInstance()方法返回的依旧是子类GregorianCalendar的对象
GregorianCalendar gregorianCalendar = new GregorianCalendar();
// System.out.println(instance.getClass());
// 1. get() 获取当前时间是这个月的第几天
int i = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);
// 2. set() 通过设置成员变量将当前时间设置为新的时间
instance.set(Calendar.DAY_OF_MONTH, 20); // (现实时间为5-29)即将当前时间设置为这个月的第20天,设置完后当前时间为5-21号
System.out.println(instance.get(Calendar.DAY_OF_MONTH));
}
// 运行结果
29
20
- add():通过成员变量添加值改变日历上的当前时间
@Test
public void test2() {
// 3. add() 在原有的成员变量上进行添加设置为新的时间
Calendar calendar = Calendar.getInstance();
Date cur_date = new Date();
calendar.add(Calendar.DAY_OF_MONTH, 3); //(显示时间是5-29)经过添加后,当前时间变成了6-1号
// 获取当前时间,进行格式转换并打印输出
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String curTime = dateFormat.format(date);
System.out.println(curTime);
}
// 运行结果
2021-06-01
- getTime():返回日历上当前时间的Date对象
- setTime():通过设置改变日历上的当前时间
@Test
public void test3() throws ParseException {
// getTime()、setTime()
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd") ;
Date curDate = new Date();
Date date = calendar.getTime();
System.out.println("由日历得到的时间"+dateFormat.format(date));
System.out.println(String.format("直接创建Date类对象得到的时间:" + dateFormat.format(curDate)));
// 通过setTime()方法将日历的当前时间设置为这个月月初
String monthBegin_str = "2021-05-01";
Date monthBegin_date = dateFormat.parse(monthBegin_str);
calendar.setTime(monthBegin_date);
// 输出日历的当前时间,并创建一个Date对象查看系统当前时间进行比较
System.out.println();
System.out.println("由日历得到的时间"+dateFormat.format(calendar.getTime()));
System.out.println(String.format("直接创建Date类对象得到的时间:" + dateFormat.format(new Date())));
}
// 运行结果:
由日历得到的时间2021-05-29
直接创建Date类对象得到的时间:2021-05-29
由日历得到的时间2021-05-01
直接创建Date类对象得到的时间:2021-05-29
注意:
- Calendar类中:
- 获取月份时:一月是0,二月是1,以此类推,12月是11
- 获取星期时,周天是1,周一是2,… …,周六是7