03_Java时间类
Java常用时间类总结:
Date 日期类
Calendar 日历类
SimpleDateFormat 格式化时间类
Date和Calendar类 在java.util包中
SimpleDateFormat类 在java.text包
1.Date 日期
【1】new Date() 可以获取到系统时间
【2】getTime() 能获取到时间的long形式,可以用来计算时间差
getTime()——获取计算机底层存储的数字,返回一个数字用来表示时间,这个数字的类型long,单位为毫秒。
【参考代码】
import java.util.Date;public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d); // 系统时间
//get...()——获取年月日.....
System.out.println(d.getYear()+1900); // 从1900年开始算的
System.out.println(d.getMonth()+1); // 月份从0开始计算
System.out.println(d.getDate()); // 天数
System.out.println(d.getHours());// 小时
//getTime()——获取到时间的毫秒形式 返回的是long
System.out.println(d.getTime());
}
}
2.Calendar 日历
【1】get() 获取到时间的某一部分
【2】set() 设置时间 - -> 计算时间:系统已经帮我们设置好了,不用担心二月有多少天等问题,计算时间十分方便
注:Calendar 日历类是抽象类,因此不可以去new对象。虽然抽象类不能创建对象,但是jdk官方提供了一个实例对象的操作:
Calendar rightNow = Calendar.getInstance();
我们通过这条代码就是直接造了一个Calender的对象
【参考代码】:get() 获取到时间的某一部分:
package date;import java.util.Calendar;
public class TestCalendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// System.out.println(cal);
/*
假设当天:
2021
8
10
*/
cal.set(Calendar.DATE,cal.get(Calendar.DATE)+31); // 计算时间(这里用天数计算的)
// 获取Calendar创建的对象里的所有内容
System.out.println(cal.get(Calendar.YEAR)); // 2021 年
System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的 结果:为10月
System.out.println(cal.get(Calendar.DATE)); // 日
System.out.println(cal.get(Calendar.HOUR_OF_DAY));// 小时
System.out.println(cal.get(Calendar.MINUTE));
System.out.println(cal.get(Calendar.SECOND));
}
}
【参考代码】:set() 设置时间 - -> 计算时间:
注:cal.setTime(d); 把Date转化成Calendar
package date;import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);// 把Date转化成Calendar
System.out.println(cal);
System.out.println(cal.get(Calendar.YEAR)); // 年
System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的
System.out.println(cal.get(Calendar.DATE)); // 日
}
}
3.SimpleDateFormat格式化时间
Date,Calendar通过引用也可以进行时间的格式化,但比较繁琐,而SimpleDateFormat类是专门帮我们格式化时间的工具类,它在java.text包中。
【时间格式】:yyyy-MM-dd HH:mm:ss
SimpleDateFormat类有两大常用方法:
【1】format(Date):
format(Date) 帮我们把时间转成字符串,字符串的格式为SimpleDateFormat类定义对象时设置的时间格式
【参考代码】
package Simple;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d); //Thu Aug 12 08:40:08 CST 2021 不美观
// 设置格式化时间的模式,我们常用yyyy-MM-dd HH:mm:ss这个模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 时间格式
String s = sdf.format(d); // 格式化时间
System.out.println(s); // 2021-08-12 08:45:09
}
}
【2】parse(String):
parse(String) 帮我们把字符串转化成时间
【参考代码】
package Simple;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个时间(yyyy-MM-dd HH:mm:ss):");
String s = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(s); // 把字符串转成时间
System.out.println(d);
/*
请输入一个时间(yyyy-MM-dd HH:mm:ss):
2021-08-12 12:25:21
Thu Aug 12 12:25:21 CST 2021
*/
}
}
注:由于用户输入的字符串不一定是我们要求的格式,可能是任何东西,想把它们转成时间是不可能的,你不可能把一个人转成时间 对吧,因此存在着很大的风险未处理(异常: java.text.ParseException),为此我们需要处理异常。
4.计算时间差
计算思路:
- 格式化时间
- 先将字符串转化成long类型时间
- 计算毫秒级别时间差,取绝对值
- 毫秒级别时间差转成秒级别
- 秒级别时间差转成分钟级别
- 分钟级别时间差转化显示成xx小时xx分钟
【参考代码】
package Simple;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDiff {
public static void main(String[] args) throws ParseException {
String s1 = "2021-08-12 12:00:00"; // 开始时间
String s2 = "2021-08-12 14:35:00"; // 结束时间
//格式化时间
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
//将字符串转成时间形式
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
//计算时间差:先要获取时间毫秒形式(long类型) 再做差
long long1 = d1.getTime();
long long2 = d2.getTime();
long diffTime = Math.abs(long1 - long2);
// 秒级别时间差
long diffSec = diffTime / 1000;
// 分级别时间差
long diffMin = diffSec / 60;
//显示 xx小时xx分钟
long displayHours = diffMin / 60; // 小时
long displayMin = diffMin % 60; //分钟
System.out.println("您学习的时长为:"+displayHours+"小时"+displayMin+"分钟");
}
}
以上是 03_Java时间类 的全部内容, 来源链接: utcz.com/z/391186.html