java获取当前时间和求时间差(分钟,秒钟,小时,年等)
程序员文章站
2024-01-14 21:25:22
...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
建议记住固定的api,因为是java的原生api,且在项目中会经常用到,记住之后可以手到擒来,其他的简单的api也建议可以背下来,同理。提示:以下是本篇文章正文内容,下面案例可供参考,新手小白:最后有作业哦~如果想锻炼api,可以做一下文章最后的作业。
一、场景介绍
java获取当前时间
场景一:在工作中会经常用到获取当前时间,计算时间差,例如:保存到数据库的时候,除了用数据库函数之外可以给字段赋值之后保存到数据库里面;
java计算时间差
场景二:提醒或超时功能,在未来的某一个时间提醒或在未来的某一个时间修改超时状态,那么需要在当前时间加上几天或者几个小时之后再保存的数据库里面。
二、代码时间
1.获取当前时间
代码如下(示例):
public static void main(String[] args){
//1、用Date对象然后格式化
Date date1=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(date1);
System.out.println(dateStr); //2020-10-30 17:47:25
//2、用Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());//2020-10-30 17:47:25
//3、用DateFormat对象
DateFormat dateTimeInstance = DateFormat.getDateTimeInstance();
String format = dateTimeInstance.format(new Date());
System.out.println(format);//2020-10-30 17:47:25
/*请注意Calendar和DateFormat不是new出来的!最好可以记住,以免在使用的时候影响工作效率*/
}
2.时间计算(加、减)
时间加法(示例):
public static void main(String[] args){
//一、加法时间计算方法可以使用Calendar对象
Calendar calendar = Calendar.getInstance();
//初始化日期格式化对象,后面会用到
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//1、获取当前时间:calendar.getTime() api是获取当前时间,打印出来是:Fri Oct 30 18:00:04 CST 2020
calendar.setTime(calendar.getTime());
Date nowDate = calendar.getTime();
String nowDateStr = dateformat.format(nowDate);
System.out.println(nowDateStr);//当前时间:2020-10-30 18:10:51
//2、当前时间增加24小时
calendar.add(Calendar.HOUR, 24);
Date addition24HourDate = calendar.getTime();
String addition24DateStr = dateformat.format(addition24HourDate);
System.out.println(addition24DateStr);//增加小时 2020-10-31 18:10:51
//3、再增加5分钟
calendar.add(Calendar.MINUTE, 5);
Date addition5MinuteDate = calendar.getTime();
String addition5MinuteDateStr = dateformat.format(addition5MinuteDate);
System.out.println(addition5MinuteDateStr);//增加分钟 2020-10-31 18:15:51
//4、再增加1年
calendar.add(Calendar.YEAR, 1);
Date addition1YearDate = calendar.getTime();
String addition1YearDateStr = dateformat.format(addition1YearDate);
System.out.println(addition1YearDateStr);//增加年 2021-10-31 18:15:51
/*请注意代码中用到的是同一Calendar对象,所以时间是累加,如果是不累加,需要用新的Calendar对象*/
}
时间减法(示例):
public static void main(String[] args) throws ParseException {
//一、时间减法可以用Calendar对象加法中,把第二个参数换成负数可以时间,这边就不列举了;使用第二种方式做时间减法
//1、指定两个Date对象,业务中可以以参数的形式传递,不用new当前时间。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowDate = new Date(); //当前时间
String yesterday = "2020-10-29 12:35:28";
Date yesterdayDate = dateFormat.parse(yesterday);//假设一个时间,工作业务中可以参数传递的形式来获取。
//2、时间戳相减
long yesterdayDateTime = yesterdayDate.getTime();//昨天的时间戳
long nowDateTime = nowDate.getTime();//当前时间戳
int result = (int) (nowDateTime - yesterdayDateTime);//毫秒
//3、换算成秒
int diffSecond = result / 1000; //1000毫秒等于1秒
System.out.println(diffSecond); //108296 秒
//4、换算成分钟
int diffMinute = result / 1000 / 60;//60秒等于1分钟
System.out.println(diffMinute);//1805 分钟
//5、换算成是小时
int diffHour = result / 1000 / 60 / 60;//60分钟等于1小时
System.out.println(diffHour);//30小时
//6、换算成天
int diffDay = result / 86400000;
System.out.println(diffDay);//1天
}
}
需求
大神走开,小白留下:
小白菜鸟,以上就是今天要讲的内容,如果想快速记住api建议思考以下需求,并且完成:
作业一:在订火车票的时候,如果两辆车发车时间在30分钟之内不允许再定车票,如果大于30分钟才可以订车票。
作业二:在内部管理系统有一个预约访谈的功能,如果已经在某个时刻预约了一个访谈,那么在这个访谈之后1个小时内不允许再预约第二个访谈,以此类推。
作业三:在工作中会把获取当前时间 增加年 增加月 增加日 减年 减月 减日 等方法封装为DateUtils类,并且把每个计算封装成为静态方法,请按照今天学习的内容思考,并且完成静态方法类DateUtils的封装。