当前位置:网站首页>使用 Calendar 计算时间
使用 Calendar 计算时间
2022-06-28 10:51:00 【Hello_xzy_Word】
使用 Calendar 计算时间
一. 类型转换
1.1 Date → Calendar
public Calendar date2Calendar(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
1.2 Calendar → Date
public Date calendar2Date(Calendar calendar){
return calendar.getTime();
}
二. 时间计算
2.1 ?毫秒
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
// 手动设置时间
startCalendar.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
endCalendar.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
startCalendar.set(Calendar.MILLISECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
long startCalendarTimeInMills = startCalendar.getTimeInMillis();
long endCalendarTimeInMills = endCalendar.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
System.out.println("相差:" + differenceInMills + "(毫秒)");
代码执行结果:
相差: 90061000(毫秒)
Process finished with exit code 0
2.2 ?秒
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
// 手动设置时间
startCalendar.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
endCalendar.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
startCalendar.set(Calendar.MILLISECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
long startCalendarTimeInMills = startCalendar.getTimeInMillis();
long endCalendarTimeInMills = endCalendar.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
//1秒 = 1000毫秒
long differenceInSecond = differenceInMills / 1000;
System.out.println("相差: " + differenceInSecond + "(秒)");
代码执行结果:
相差: 90061(秒)
Process finished with exit code 0
2.3 ?分钟
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
// 手动设置时间
startCalendar.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
endCalendar.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
startCalendar.set(Calendar.MILLISECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
// 计算毫秒差值
long startCalendarTimeInMills = startCalendar.getTimeInMillis();
long endCalendarTimeInMills = endCalendar.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
// 1秒 = 1000毫秒
long differenceInSecond = differenceInMills / 1000;
// 1分钟 = 60秒
long differenceInMinute = differenceInSecond / 60;
System.out.println("相差: " + differenceInMinute + "(分钟)");
代码执行结果:
相差: 1501(分钟)
Process finished with exit code 0
2.4 ?小时
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
// 手动设置时间
startCalendar.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
endCalendar.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
startCalendar.set(Calendar.MILLISECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
// 计算毫秒差值
long startCalendarTimeInMills = startCalendar.getTimeInMillis();
long endCalendarTimeInMills = endCalendar.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
// 1秒 = 1000毫秒
long differenceInSecond = differenceInMills / 1000;
// 1分钟 = 60秒
long differenceInMinute = differenceInSecond / 60;
// 1小时 = 60分钟 = 3600秒
long differenceInHour = differenceInSecond / 3600;
System.out.println("相差: " + differenceInHour + "(小时)");
代码执行结果:
相差: 25(小时)
Process finished with exit code 0
2.5 ? 时?分?秒?毫秒
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
// 手动设置时间
startCalendar.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
endCalendar.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
startCalendar.set(Calendar.MILLISECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
// 计算毫秒差值
long startCalendarTimeInMills = startCalendar.getTimeInMillis();
long endCalendarTimeInMills = endCalendar.getTimeInMillis();
long differenceInMills = endCalendarTimeInMills - startCalendarTimeInMills;
// 1秒 = 1000毫秒
long differenceInSecond = differenceInMills / 1000;
// 1分钟 = 60秒
long differenceInMinute = differenceInSecond / 60;
// 1小时 = 60分钟 = 3600秒
long differenceInHour = differenceInSecond / 3600;
System.out.println("相差: " +
(differenceInSecond / 3600) + "小时" +
(differenceInSecond % 3600) / 60 + "分钟" +
(differenceInSecond % 3600 % 60) + "秒" +
(differenceInMills % 1000) + "毫秒");
代码执行结果:
相差: 25小时1分钟1秒0毫秒
Process finished with exit code 0
三、时间比较
3.1 两个日期相差几天?
public static void main(String[] args) {
/* * 计算两个日期之间的差值: * 日期1:2019-12-31 12:30:12 * 日期2:2020-01-01 13:31:13 */
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar1.set(2019, Calendar.DECEMBER, 31, 12, 30, 12);
calendar2.set(2020, Calendar.JANUARY, 1, 13, 31, 13);
calendar1.set(Calendar.MILLISECOND, 0);
calendar2.set(Calendar.MILLISECOND, 0);
// 1.获取日期毫秒数
long timeInMills1 = calendar1.getTimeInMillis();
long timeInMills2 = calendar2.getTimeInMillis();
// 2.计算:本日期是自1900年以来的第几天?
long days1 = timeInMills1 / 1000 / 3600 / 24;
long days2 = timeInMills2 / 1000 / 3600 / 24;
System.out.println("日期 " + calendar1.getTime() +
" 是1900年以来的第" + days1 + "天");
System.out.println("日期 " + calendar2.getTime() +
" 是1900年以来的第" + days2 + "天");
// 3.计算日期相差的天数
long differenceDays = days2 - days1;
System.out.println("两个日期相差:" + differenceDays + "天");
}
代码执行结果:
日期 Tue Dec 31 12:30:12 CST 2019 是1900年以来的第18261天
日期 Wed Jan 01 13:31:13 CST 2020 是1900年以来的第18262天
两个日期相差:1天Process finished with exit code 0
边栏推荐
猜你喜欢
随机推荐
flink1.15,支持mysql视图吗?我这边在table-name处配置视图名保存,找不到表。想
JS基础10
Training and recognition of handwritten digits through the lenet-5 network built by pytorch
Threads and thread pools
[leetcode daily question] [December 19, 2021] 997 Find the town judge
【monkey】monkey测试入门
一种跳板机的实现思路
【实战】1364- 实现一个完美的移动端瀑布流组件(附源码)
一种跳板机的实现思路
sentinel
Debug debugging in katalon
MySQL查看数据库性能常用命令
Katalon当中的output使用方法
【力扣——动态规划】整理题目1:基础题目:509、70、746、62、63、343、96(附链接、题目描述、解题方法及代码)
[Unity]内置渲染管线转URP
如何利用k线图做技术分析
MarkDown——基本使用语法
树莓派无需显示屏的VNC Viewer方式的远程连接
AQS理解
June training (day 28) - Dynamic Planning


![[unity][ecs] learning notes (II)](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)




![[practice] appium settings app is not running after 5000ms](/img/3c/5a7544561231a15a4bb5cfa9e102b3.png)
