【愚公系列】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如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、