【愚公系列】2023年10月 Java教学课程 039-日期与时间

2024-02-27 07:30

本文主要是介绍【愚公系列】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类提供了许多常用的方法,以下是一些常用的方法:

  1. getTime():返回自1970年1月1日00:00:00 GMT以来的毫秒数。
  2. setTime(long time):设置时间,参数为自1970年1月1日00:00:00 GMT以来的毫秒数。
  3. toString():将日期对象转换为字符串。
  4. before(Date when):判断当前日期是否在给定日期之前。
  5. after(Date when):判断当前日期是否在给定日期之后。
  6. compareTo(Date anotherDate):比较两个日期的先后顺序,如果当前日期在参数日期之前,则返回负数,如果相等,则返回0,否则返回正数。
  7. equals(Object obj):判断当前日期是否和参数日期相等。
  8. getYear():返回当前日期的年份。
  9. getMonth():返回当前日期的月份,范围从0到11。
  10. getDate():返回当前日期的天数。
  11. getDay():返回当前日期是星期几,范围为0到6,其中0表示星期日。
  12. getHours():返回当前日期的小时数,范围为0到23。
  13. getMinutes():返回当前日期的分钟数,范围为0到59。
  14. getSeconds():返回当前日期的秒数,范围为0到59。
  15. 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,判断用户有没有成功参与秒杀活动

  • 实现步骤

    1. 判断下单时间是否在开始到结束的范围内
    2. 把字符串形式的时间变成毫秒值
  • 代码实现

    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-日期与时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751645

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2