Java日期查询
本实例使用有关日期处理和日期格式化的类实现一个日期查询的功能,即查询指定日期所在周的周一日期、两个指定日期间相差的天数和指定日期为所在周的星期几的日期 3 个功能。
从功能上来看,本实例至少需要定义 3 个方法,分别完成:获取指定日期所在周的周一日期、获取两个指定日期的相差天数以及获取指定日期为所在周的星期几的日期这 3 个功能,同时需要定义 Date 类型的日期与 String 类型之间的转换方法。
(1) 新建 Exercise 类,在该类中导入需要的包。代码如下:
- import java.text.Parse Exception;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- public class Exercise {
- // 在该类中有5个方法,在下面的步骤中将会讲解,这里省略
- }
(2) 在 Exercise 类中定义获取指定日期所在周的周一日期的方法——getMonday(),该方法是一个静态方法,返回值为 String 类型,并且需要传递一个 Date 类型的参数,然后将该日期参数作为 Calendar 对象的日期,并调用 Calendar 类的 set(int field,int value)方法改变 Calendar 对象中的日期,再将使用 SimpleDateFormat 类格式化后的日期返回。
getMonday() 方法的代码实现如下:
- // 获取指定日期所在周的周一日期
- public static String getMonday(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
- return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
- }
(3) 继续在 Exercise 类中定义获取两个日期间相差天数的方法——getTwoDay(),该方法需要传递两个 String 类型的参数。
在该方法的主体中,首先需要创建一个 SimpleDateFormat 类对象,并指定日期的格式,然后需要调用 SimpleDateFormat 对象的 parse() 方法,将传递过来的两个 String 类型的日期转换为 Date 类型,并将这两个 Date 类型的日期进行运算,得出相差的天数,返回一个 int 类型的变量。
getTwoDay() 方法的代码实现如下:
- // 获取两个日期间相差的天数
- public static int getTwoDay(String sj1, String sj2) {
- SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
- int day = 0;
- try {
- Date date = myFormatter.parse(sj1);
- Date mydate = myFormatter.parse(sj2);
- // 计算两个日期间相差的天数
- day = (int)((date.getTime()-mydate.getTime())/(24*60*60*1000));
- } catch(Exception e) {
- return 0;
- }
- return day;
- }
(4) 在 Exercise 类中继续创建两个静态方法,分别完成 String 类型的日期与 Date 类型日期的互换功能。代码如下:
- // 将String类型的日期转换为Date类型
- public static Date strToDate(String strDate) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date date = null;
- try {
- date = sdf.parse(strDate);
- } catch(ParseException e) {
- e.printStackTrace();
- }
- return date;
- }
- // 将Date类型的日期转换为String类型
- public static String DateToStr(Date date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- String strDate = sdf.format(date);
- return strDate;
- }
(5) 在 Exercise 类中定义获取指定日期所在周的指定星期的日期方法——getWeek(),该方法需要传递两个 String 类型的参数,其中第一个参数表示指定的日期,第二个参数表示星期几。
在该方法的主体中,首先调用了 strToDate() 方法,将 String 类型的日期转换为 Date 类型的日期,并将该日期作为 Calendar 类对象日期,然后判断传递过来的第二个参数的值,使用 Calendar 类中的 set(int field,int value) 方法改变日期,从而将格式化后的日期返回。
getWeek() 方法的代码实现如下:
- // 获得一个日期所在周的星期几的日期,如要找出2011年5月1日所在周的星期一是几号
- // @param sdate所确定的日期形式2011-05-01
- // @param num要确定的是周几(1表示周一,2表示周二)
- // @return
- public static String getWeek(String sdate, String num) {
- // 再转换为时间
- Date dd = strToDate(sdate);
- Calendar c = Calendar.getInstance();
- c.setTime(dd);
- int weekNo = Integer.parseInt(num);
- switch (weekNo) {
- case 1:
- c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); //返回星期一所在的日期
- break;
- case 2:
- c.set(Calendar.DAY_OF_WEEK,Calendar.TUESDAY); //返回星期二所在的日期
- break;
- case 3:
- c.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY); //返回星期三所在的日期
- break;
- case 4:
- c.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY); //返回星期四所在的日期
- break;
- case 5:
- c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY); //返回星期五所在的日期
- break;
- case 6:
- c.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY); //返回星期六所在的曰期
- break;
- case 7:
- c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY); //返回星期曰所在的日期
- break;
- }
- return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
- }
(6) 创建测试类 Test15,调用 Exercise 类的方法,完成查询当前日期所在周的周一日期,并获取本周的周一曰期与当前曰期相差的天数,同时还可以查询本周中任意星期几的曰期。代码实现如下:
- package com.common.mxl;
- import java.util.Date;
- import java.util.Scanner;
- import com.common.mxl.Exercise;
- public class Test15 {
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- Date date = new Date();
- String monday = Exercise.getMonday(date);
- System.out.print("这周一的日期为【"+monday+"】,");
- String nowStr = Exercise.DateToStr(date); // 将 Date 类型的日期转换为 String 类型
- int num = Exercise.getTwoDay(nowStr,monday);
- System.out.print("与今天相差【"+num+"】天");
- SyStem.out.println("\n请输入您要查询本周星期几的日期(1表示星期一,2表示星期二…):");
- String weekNo = input.next(); //获取用户输入的星期
- int no = Integer.parseInt(weekNo);
- //将用户输入的星期转换为int类型,以便使用switch语句
- String strWeekNo = "";
- switch(no) {
- case 1:
- strWeekNo = "星期一";
- break;
- case 2:
- strWeekNo = "星期二";
- break;
- case 3:
- strWeekNo = "星期三";
- break;
- case 4:
- strWeekNo = "星期四";
- break;
- case 5:
- strWeekNo = "星期五";
- break;
- case 6:
- strWeekNo = "星期六";
- break;
- case 7:
- strWeekNo = "星期日";
- break;
- }
- System.out.println("本周【"+strWeekNo+"】的日期为:"+Exercise.getWeek(nowStr,weekNo));
- }
- }
在本程序中,综合使用了 Date 类、Calendar 类和 SimpleDateFormat 类完成了时间处理功能。在源码中,多次使用 Calendar 类的 set(int field,int value) 方法来改变日期,从而获取用户查询的日期。该方法在日期操作方面比较常用,大家需要熟练掌握该方法。
该程序的运行结果如下所示:
这周一的日期为【2023-10-15】,与今天相差【0】天 请输入您要查询本周星期几的日期(1表示星期一,2表示星期二…): 1 本周【星期一】的日期为:2023-10-15
相关文章:
Java日期查询
本实例使用有关日期处理和日期格式化的类实现一个日期查询的功能,即查询指定日期所在周的周一日期、两个指定日期间相差的天数和指定日期为所在周的星期几的日期 3 个功能。 从功能上来看,本实例至少需要定义 3 个方法,分别完成:获…...
uniapp 运行到 app 报错 Cannot read property ‘nodeName‘ of null
uniapp 运行到某一个页面,报错,h5没有问题 Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repovuejs/coreat <GuiPagecustomHeadertruecustomF…...
Mac M1通过homebrew安装Redis报错(perl: unknown or unsupported macOS version: :dunno)
〇、解决方案 升级homebrew,命令如下: brew update-reset一、问题现象 通过命令brew install redis安装Redis,异常如下: fatal: not in a git directory Warning: No remote origin in /opt/homebrew/Library/Taps/homebrew/h…...
如何在 Spring Boot 中进行分布式追踪
在 Spring Boot 中进行分布式追踪 分布式系统中的应用程序由多个微服务组成,它们可以位于不同的服务器、容器或云中。当出现问题时,如性能瓶颈、错误或延迟,了解问题的根本原因变得至关重要。分布式追踪是一种用于跟踪和分析分布式应用程序性…...
Lniux三剑客——Grep
前言 echo guangge{01…100…2} 第二个是间隔多少个计数 命令别名 alias, unalias , 作用是封装命令: alias rm ‘rm -i’ 命令历史 history !行号 !! 上一次的命令 ctrl a 移动到行首 ctrl e 移动到行尾 Grep 格式: gre…...
选实验室超声波清洗机易忽视的内容?小型清洗机的优点有?
实验室超声波清洗机如今在行业内占据着重要的一席之地,摒弃了传统模式,坚持以超声波为主的清洗方式,在市场中获得的反响强烈。服务好,有诚信的实验室超声波清洗机能够消除客户的后顾之忧,工作人员会以真诚态度向客户提…...
基于Java使用SpringBoot+Vue框架实现的前后端分离的美食分享平台
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在当今社会࿰…...
开源数据库MySQL 8.0 OCP认证精讲视频、环境和题库 之二
修改用户的初始密码: mysql>alteruserrootlocalhostidentifiedbyQaz1234; 或者: mysql>alteruseruser0identifiedbyQaz_1234; 在版本5.x中: mysql>setpasswordpassword(Qaz_1234); 可执行文件: 服务器端&…...
AI对网络安全的影响与挑战
近年来,随着人工智能(AI)技术的快速发展,网络安全领域也开始逐渐引入生成式AI应用。根据最新的数据研究,生成式AI对网络安全和合规的影响最大,同时也包括了IT和云的运维、硬件和软件支持领域。通过AI和自动…...
微信小程序备案流程操作详解,值得收藏
目录 一、小程序备案法律法规参考 二、备案前准备 2.1 备案入口 2.1.1、未上架小程序 2.1.2、已上架小程序 (二)备案类型 (三)备案材料准备 3.1、小程序备案材料 3.2、前置审批材料 3.3、个人备案 3.4、非个人备案 三、备案整体流程 (一)备案信息填写 1、主体信息…...
【NLTK系列01】:nltk库介绍
一、说明 NLTK是个啥?它是个复杂的应用库,可以实现基本预料库操作,比如,、将文章分词成独立token,等操作。从词统计、标记化、词干提取、词性标记,停用词收集,包括语义索引和依赖关系解析等。 …...
人机环境系统智能有利于防止人工智能失控
当前,人工智能的失控是一个备受关注的话题。尽管目前还没有出现完全失控的人工智能系统,但确实存在一些潜在的风险和挑战需要我们重视和应对。一些可能导致人工智能失控的因素包括: 误用和恶意使用:人工智能技术可以被用于恶意活动…...
用于多目标检测的自监督学习(SELF-SUPER VISED LEARNING FOR MULTIPLE OBJECTDETECTION)
在本章中,我们提出了一种新的自监督学习(SSL)技术,以从头顶图像中提供关于实例分割不确定性的模型信息。我们的SSL方法通过使用测试时数据增强和基于回归的旋转不变伪标签细化技术来改进对象检测。我们的伪标签生成方法提供多个经过几何变换的图像作为卷积神经网(CNN)的输…...
HDLbits: ps2data
这一题在上一题基础上多了一个输出,并且这个输出是不需要像上一题考虑出错的情况的,所以只要把输入in按次序排好就可以。我一开始的想法是在状态切换判断的always块里把in赋给out,但是不正确,代码如下: module top_mo…...
SpringCloudAlibaba SpringCloud SpringBoot 版本对照
由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为…...
Swift基础
本文是个比较简单的学习笔记,更详细的内容见 Swift官方文档 1、相等性比较 Swift标准库用 < 和 运算符定义了 >、>、<,所以实现 Comparable 的 < 运算符就会自动得到这些运算符的实现,实际上 Comparable 继承自 Equatable&…...
基于php+thinkphp+vue的校园二手交易网站
运行环境 开发语言:PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHPvue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发…...
SystemVerilog Assertions应用指南 第一章(1.25章节 “first_match”运算符)
任何时候使用了逻辑运算符(如“and”和“or”)的序列中指定了时间窗,就有可能出现同一个检验具有多个匹配的情况。“ first match”构造可以确保只用第一次序列匹配,而丢弃其他的匹配。当多个序列被组合在一起,其中只需时间窗内的第一次匹配来检验属性剩余的部分时,“ first ma…...
python和go执行字符串表达式
1、python/eval python里可以使用内置的eval函数,来执行一个字符串表达式的结果,字符串表达式里可以是变量、函数、运算符等 def test():return True flag False print(eval("test() and True and flag" )) 执行结果为False 2、golang/go…...
Python算法练习 10.14
leetcode 2095 删除链表的中间节点 给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
