【愚公系列】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程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect