首页 > 编程语言 >java中如何灵活的比较日期大小

java中如何灵活的比较日期大小

时间:2023-04-05 16:58:48浏览次数:36  
标签:checkTime set java String 灵活 00 日期 Date Calendar

java中如何灵活的比较日期时间大小

  在比较两个日期时间的大小之前,我们先了解两个需要用到的类:Date和Calendar

  1.  Date类

  java.util 包提供了 Date 类来封装当前的日期和时间

 1    public static void main(String[] args) {
 2         Date dNow = new Date();
 3         System.out.println("当前时间戳为:" + dNow.getTime());
 4         SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 5         System.out.println("当前时间格式化为:" + ft.format(dNow));
 6    }
 7 
 8   // 测试结果为:
 9   // 当前时间戳为:1680682212062  (毫秒时间戳)
10   // 当前时间格式化为:2023-04-05 04:10:12

   2.  Calendar类

   Calendar允许我们设置和获取日期数据的特定部分

 1     public static void main(String[] args) throws ParseException {
 2   
 3         // Calendar类的功能要比Date类强大很多
 4 
 5         Calendar c = Calendar.getInstance(); // 默认是当前日期
 6 
 7         // 把Calendar对象c1的年月日分别设这为:2009、6、12
 8         c.set(2009, 6, 12);
 9 
10         // 10天后的日期
11         c.set(Calendar.DATE, 10);
12         c.set(Calendar.YEAR, 2005);
13 
14         // 10天前的日期
15         c.set(Calendar.DATE, -10);
16 
17      }

   3. 日期和string的互转方法

   1) Date转String
   Date d=new Date();
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String ds=df.format(d);

   2)String转Date
   String ds=new String("2023-04-05 08:30:00");
   Date sd=ds.parse(ds);

   4. 比较给定时间是否在日期区间内

    利用Calendar的before和after两个方法

 1 package henry.date;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Calendar;
 6 import java.util.Date;
 7 
 8 public class DateDemo {
 9     public static void main(String[] args) throws ParseException {
10         DateDemo dateDemo = new DateDemo();
11         String addTime = new String("2023-04-05 05:00:00");
12         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
13 
14         / string转化为date类
15         Date sd1 = df.parse(addTime);
16         Calendar checkTime = Calendar.getInstance();
17         checkTime.setTime(sd1);
18         int hour=checkTime.get(Calendar.HOUR_OF_DAY);
19         System.out.println("hour:"+hour);
20 
21         boolean res = dateDemo.checkExistTimeRange(checkTime);
22         String str = res ? "是" : "否";
23         System.out.println("检查发布时间是否在特定时段:" + str);
24 
25     }
26 
27 
28     // 检查给定时间是否在特定时段:晚上19:30-凌晨4:29
29     public Boolean checkExistTimeRange(Calendar checkTime) {
30 
31         // 19:30:00
32         Calendar c1 = Calendar.getInstance();
33         c1.set(Calendar.HOUR_OF_DAY, 19);
34         c1.set(Calendar.MINUTE, 30);
35         c1.set(Calendar.SECOND, 0);
36 
37         // 23:59:59
38         Calendar c2 = Calendar.getInstance();
39         c2.set(Calendar.HOUR_OF_DAY, 23);
40         c2.set(Calendar.MINUTE, 59);
41         c2.set(Calendar.SECOND, 59);
42 
43         // 00:00:00
44         Calendar c3 = Calendar.getInstance();
45         c3.set(Calendar.HOUR_OF_DAY, 0);
46         c3.set(Calendar.MINUTE, 0);
47         c3.set(Calendar.SECOND, 0);
48 
49         // 04:29:00
50         Calendar c4 = Calendar.getInstance();
51         c4.set(Calendar.HOUR_OF_DAY, 4);
52         c4.set(Calendar.MINUTE, 29);
53         c4.set(Calendar.SECOND, 0);
54 
55 
56         if (checkTime.after(c1) && checkTime.before(c2)) {
57             return true;
58         }
59 
60         if (checkTime.after(c3) && checkTime.before(c4)) {
61             return true;
62         }
63 
64         return false;
65     }
66 }
67 
68 // 测试结果为:
69 // 检查发布时间是否在特定时段:否

 

标签:checkTime,set,java,String,灵活,00,日期,Date,Calendar
From: https://www.cnblogs.com/hld123/p/17289728.html

相关文章

  • java结构
    Java结构顺序结构1.JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。2.顺序结构是最简单的算法结构。3.语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。选择结构1......
  • JavaScript之函数,变量作用域,let(局部变量),const(常量)
    一.函数方法:面向对象特有的,它是对象的一部分,一个对象包含属性和方法函数:它的功能类似于方法,但是函数的写法是直接与类文件一体的,方法是包含在类文件中的,函数和类文件是一级目录JavaScript中的函数是包含在函数的定义方式一般用 function 来声明所有函数,他不同于其它高级语......
  • JavaWeb-response 下载文件-2023-04-05
    packagecom.feijian.servlet;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.......
  • 【Java 并发】【九】【AQS】【一】什么是AQS?为什么说它是JUC基础框架?
    1 前言这节我们来开始看AQS,这个东西可以说是搞Java的都知道的,本节会介绍一下AQS以及它提供的基本机制,后面再对AQS提供的每一个机制一个个深入的剖析。2  什么是AQS?(同步器基础框架)AQS叫做抽象队列同步器(AbstractQueuedSynchronizer),它是一个实现了同步器功能的基础框架,其......
  • java代码执行的过程
    java程序的运行必须经过三个阶段:编写、编译、运行编写:指在Java开发环境中进行程序代码的输入,最终形成后缀名为.java的Java源文件。编译:通过java编译器将java源文件(*.java)编译为java字节码文件(*.class)运行:通过java类加载器将java字节码加载到堆内存中,再通过java解释器将堆......
  • C++库封装JNI接口——实现java调用c++
    1.JNI原理概述通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步......
  • Java Scanner的next和nextLine的区别
    一.next要读取到有效字符才能结束输入,否则会一直处于读取状态读取到有效字符前的空格,会自动清除只有读取到有效字符后,才会把之后的空格清除next不能读取带有空格的字符串空格不能输出只有读取到有效字符后才输出只能输出空格之前的字符二.nextLine1.以Enter为结束......
  • java——maven——分模块开发与设计
                注意:   参数说明:-DgroupId:项目组ID,通常为组织名或公司网址的反写。-DartifactId:项目名。-DarchetypeArtifactId:指定ArchetypeId,maven-archetype-quickstart用于快速创建一个简单的Maven项目。-DinteractiveMode:是......
  • Java基础
    注释1.单行注释//用于注释少量的代码或者对附近的代码进行说明2.多行注释/*/多用于注释多行代码3.文档注释/**/一般用于对类和方法进行说明vscode注释方法的快捷键:1.单行注释:选中区域Ctrl+/取消注释同样是这个快捷键2.多行注释:选中区域Alt+Shif......
  • Redis 的 Java 客户端
    实际项目中,需要通过编程语言去访问并操作Redis。Redis官方提供了多种语言的客户端,具体可访问以下地址:https://redis.io/clientsJava语言访问Redis,常用的API包括:(1)Jedis:一个很小但很健全的redis的java客户端,通过Jedis可以像使用Redis命令行一样使用Redis;Jedis......