JavaSE常用类之时间类
时间类
JavaSE常用时间类:#
1. Date 日期类#
2. Calendar 日历类#
3. SimpleDateFormat 格式化时间类#
Date和Calendar类 在java.util包中#
SimpleDateFormat类 在java.text包#
1. Date日期类#
【1】new Date() 可以获取到系统时间
【2】getTime() 能获取到时间的long形式,可以用来计算时间差
getTime()————获取计算机底层存储的数字,返回一个数字用来表示时间,这个数字的类型long,单位为毫秒。
代码#
package DateT;
import java.util.Date;
public class Datetime {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date); //系统时间
System.out.println(date.getYear()+1900); //2022年 -》从1900年开始算的
System.out.println(date.getMonth()+1); //4月 -》 月份从0月开始计算
System.out.println(date.getDate()); //天数
System.out.println(date.getHours()); //小时
System.out.println(date.getMinutes()); //分钟
System.out.println(date.getSeconds()); //秒数
System.out.println(date.getTime()); //1649301435716 获取到时间的long形式,单位为毫秒
}
}
2. Calendar 日历类#
【1】get() 获取时间
【2】set() 设置时间(注意:月份0代表1月)
【2】add()运算时间
注意:Calendar 日历类是抽象类,因此不可以去new对象。虽然抽象类不能创建对象,但是jdk官方提供了一个实例对象的操作:Calendar instance = Calendar.getInstance();
代码:#
package DateT;
import java.util.Calendar;
public class Calendartime {
public static void main(String[] args) {
//对象实例化
Calendar ins = Calendar.getInstance();
//获取时间
System.out.println(ins.get(Calendar.YEAR)); //2022年
System.out.println(ins.get(Calendar.MONDAY)+1); //4月 月份:从0开始的,应该加1
System.out.println(ins.get(Calendar.DATE)); //7天
System.out.println(ins.get(Calendar.HOUR_OF_DAY)); //11小时
System.out.println(ins.get(Calendar.MINUTE)); //32分钟
System.out.println(ins.get(Calendar.SECOND)); //17秒
System.out.println("=====================================");
//设置时间(月份0代表1月)
ins.set(2012,3,21,23,33,20);
ins.set(Calendar.YEAR, 2014);
//运算时间
ins.add(Calendar.YEAR, 1);
}
}
cal.setTime(d); 把Date转化成Calendar#
代码:#
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);// 把Date转化成Calendar
3.SimpleDateFormat格式化时间类#
SimpleDateFormat类是专门帮我们格式化时间的工具类#
【时间格式】:yyyy-MM-dd HH:mm:ss
SimpleDateFormat类有两大常用方法:#
【1】format(Date):#
format(Date) 帮我们把时间转成字符串,字符串的格式为SimpleDateFormat类定义对象时设置的时间格式
代码:#
package DateT;
import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
//时间格式:yyyy-MM-dd HH:mm:ss
public class SimpleDateFormatT {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date); //Thu Apr 07 11:50:41 CST 2022 不美观
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s= sdf.format(date);
System.out.println(s); //2022-04-07 11:53:10
}
}
【2】parse(String):#
parse(String) 帮我们把字符串转化成时间
代码:#
package DateT;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SDFTparse {
public static void main(String[] args) throws Throwable{
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 parse = sdf.parse(s); //此方法需要抛出或者捕捉
System.out.println(parse); //输入2022-04-07 12:03:01
//输出:Thu Apr 07 12:03:01 CST 2022
sc.close();
}
}
4.计算时间差#
计算思路:
1.格式化时间
2.先将字符串转化成long类型时间
3.计算毫秒级别时间差,取绝对值
4.毫秒级别时间差转成秒级别
5.秒级别时间差转成分钟级别
6.分钟级别时间差转化显示成xx小时xx分钟
代码:#
package DateT;
import java.text.SimpleDateFormat;
import java.util.Date;
//计算时间差
public class dateSample {
public static void main(String[] args) throws Throwable {
String s1 = "2022-04-7 7:50:00"; // 开始时间
String s2 = "2022-04-7 12:10: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 la=Math.abs(long2-long1);
// 秒级别时间差
long lm=la/1000;
//分级别时间差
long lf=lm/60;
//小时
long hours=lf/60;
//分钟
long minters=lf%60;
System.out.println("时间差为:"+hours+"小时"+minters+"分钟"); //时间差为:4小时20分钟
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律