本文主要是介绍【愚公系列】2023年10月 Java教学课程 039-日期与时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
文章目录
- 🚀一、时间日期类
- 🔎1.Date类
- 🔎2.Date类常用方法
- 🔎3.SimpleDateFormat类
- 🔎4.Calendar类
- 🔎5.秒杀案例
- 🚀感谢:给读者的一封信
🚀一、时间日期类
🔎1.Date类
Java中的Date类是代表日期和时间的类,它提供了多种构造方法,可以使用系统当前时间创建对象,或者指定年月日时分秒来创建对象。常见的使用方式包括获取当前日期时间、格式化日期时间字符串、计算时间差等。
以下是一个示例:
import java.util.Date;
import java.text.SimpleDateFormat;public class DateDemo {public static void main(String[] args) {// 创建Date对象,使用当前系统时间Date now = new Date();System.out.println("当前时间:" + now);// 指定日期时间创建Date对象Date birthday = new Date(99, 7, 25, 0, 0, 0);System.out.println("出生日期:" + birthday);// 将日期格式化为字符串SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String nowStr = sdf.format(now);System.out.println("当前时间字符串:" + nowStr);// 计算时间差long diff = now.getTime() - birthday.getTime();long days = diff / (1000 * 60 * 60 * 24);System.out.println("出生至今已经过了:" + days + "天");}
}
输出:
当前时间:Tue Jun 08 22:46:22 CST 2021
出生日期:Fri Aug 27 00:00:00 CST 1999
当前时间字符串:2021-06-08 22:46:22
出生至今已经过了:8028天
🔎2.Date类常用方法
Java中的Date类提供了许多常用的方法,以下是一些常用的方法:
- getTime():返回自1970年1月1日00:00:00 GMT以来的毫秒数。
- setTime(long time):设置时间,参数为自1970年1月1日00:00:00 GMT以来的毫秒数。
- toString():将日期对象转换为字符串。
- before(Date when):判断当前日期是否在给定日期之前。
- after(Date when):判断当前日期是否在给定日期之后。
- compareTo(Date anotherDate):比较两个日期的先后顺序,如果当前日期在参数日期之前,则返回负数,如果相等,则返回0,否则返回正数。
- equals(Object obj):判断当前日期是否和参数日期相等。
- getYear():返回当前日期的年份。
- getMonth():返回当前日期的月份,范围从0到11。
- getDate():返回当前日期的天数。
- getDay():返回当前日期是星期几,范围为0到6,其中0表示星期日。
- getHours():返回当前日期的小时数,范围为0到23。
- getMinutes():返回当前日期的分钟数,范围为0到59。
- getSeconds():返回当前日期的秒数,范围为0到59。
- setTimeInMillis(long millis):设置时间,参数为自1970年1月1日00:00:00 GMT以来的毫秒数。
这些方法可以帮助我们在编写程序时对日期和时间进行处理和比较。
🔎3.SimpleDateFormat类
SimpleDateFormat是Java中一个用于格式化日期的类。它可以将一个日期对象按照指定的格式转换成一个字符串,也可以将一个字符串解析成一个日期对象。
下面是一个使用SimpleDateFormat类的例子,将日期转换成指定格式的字符串:
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatExample {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(date);System.out.println(formattedDate);}
}
这个例子中,我们首先创建一个Date对象来表示当前时间。然后创建一个SimpleDateFormat对象,指定了日期格式为"yyyy-MM-dd HH:mm:ss"。最后调用SimpleDateFormat对象的format()方法将日期对象格式化成字符串,并将结果打印出来。
输出结果如下:
2021-06-21 13:30:45
除了将日期格式化成字符串外,SimpleDateFormat还可以将字符串解析成一个日期对象。例如:
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatExample {public static void main(String[] args) {String dateString = "2021-06-21 13:30:45";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {Date date = sdf.parse(dateString);System.out.println(date);} catch (ParseException e) {e.printStackTrace();}}
}
这个例子中,我们首先创建一个包含日期字符串的字符串对象。然后创建一个SimpleDateFormat对象,并指定日期格式为"yyyy-MM-dd HH:mm:ss"。最后调用SimpleDateFormat对象的parse()方法将字符串解析成一个Date对象,并将结果打印出来。
输出结果如下:
Mon Jun 21 13:30:45 CST 2021
需要注意的是,在解析日期字符串时,可能会抛出ParseException异常,因此需要进行异常处理。
🔎4.Calendar类
Java中的Calendar类是用于处理日期和时间的类。它提供了一组方法来处理年、月、日、小时、分钟、秒等,可以进行日期和时间的加减运算,以及比较不同日期、时间之间的大小关系。
Calendar类是一个抽象类,不能直接实例化,必须通过它的一个子类实现。Java提供了三个子类:GregorianCalendar、JapaneseCalendar和BuddhistCalendar。其中GregorianCalendar是最常用的。
使用Calendar类可以获得当前的日期和时间,如下所示:
Calendar calendar = Calendar.getInstance(); // 获得当前时间
Date date = calendar.getTime(); // 获得当前日期时间
也可以设置日期和时间,如下所示:
calendar.set(Calendar.YEAR, year); // 设置年份
calendar.set(Calendar.MONTH, month); // 设置月份
calendar.set(Calendar.DAY_OF_MONTH, day); // 设置日期
calendar.set(Calendar.HOUR_OF_DAY, hour); // 设置小时
calendar.set(Calendar.MINUTE, minute); // 设置分钟
calendar.set(Calendar.SECOND, second); // 设置秒钟
Calendar类还可以进行日期和时间的计算,如下所示:
calendar.add(Calendar.YEAR, 1); // 增加一年
calendar.add(Calendar.MONTH, 1); // 增加一个月
calendar.add(Calendar.DAY_OF_MONTH, 1); // 增加一天
calendar.add(Calendar.HOUR_OF_DAY, 1); // 增加一小时
calendar.add(Calendar.MINUTE, 1); // 增加一分钟
calendar.add(Calendar.SECOND, 1); // 增加一秒钟
最后需要注意的是,Calendar类中的月份是从0开始的,即0代表一月,11代表十二月。
🔎5.秒杀案例
-
需求
秒杀开始时间是2020年11月11日 00:00:00,结束时间是2020年11月11日 00:10:00,用户小贾下单时间是2020年11月11日 00:03:47,用户小皮下单时间是2020年11月11日 00:10:11,判断用户有没有成功参与秒杀活动
-
实现步骤
- 判断下单时间是否在开始到结束的范围内
- 把字符串形式的时间变成毫秒值
-
代码实现
public class DateDemo5 {public static void main(String[] args) throws ParseException {//开始时间:2020年11月11日 0:0:0//结束时间:2020年11月11日 0:10:0//小贾2020年11月11日 0:03:47//小皮2020年11月11日 0:10:11//1.判断两位同学的下单时间是否在范围之内就可以了。//2.要把每一个时间都换算成毫秒值。String start = "2020年11月11日 0:0:0";String end = "2020年11月11日 0:10:0";String jia = "2020年11月11日 0:03:47";String pi = "2020年11月11日 0:10:11";SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");long startTime = sdf.parse(start).getTime();long endTime = sdf.parse(end).getTime();// System.out.println(startTime); // System.out.println(endTime);long jiaTime = sdf.parse(jia).getTime();long piTime = sdf.parse(pi).getTime();if(jiaTime >= startTime && jiaTime <= endTime){System.out.println("小贾同学参加上了秒杀活动");}else{System.out.println("小贾同学没有参加上秒杀活动");}System.out.println("------------------------");if(piTime >= startTime && piTime <= endTime){System.out.println("小皮同学参加上了秒杀活动");}else{System.out.println("小皮同学没有参加上秒杀活动");}}}
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
这篇关于【愚公系列】2023年10月 Java教学课程 039-日期与时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!