精华内容
下载资源
问答
  • https://baijiahao.baidu.com/s?id=1640171139026412438&wfr=spider&for=pc after相当于大于号 before相当于小于号

    https://baijiahao.baidu.com/s?id=1640171139026412438&wfr=spider&for=pc

    after相当于大于号
    before相当于小于号

    展开全文
  • 说这个Java日期比较,无非就是date.before(date1)或者是date.after(date2)来进行判断哪个日期在前,哪个日期在后,一般而言,对于同一天的日期比较也没什么问题,这两个方法也能返回正常值,但对于如下的两个日期...

    说这个Java日期比较,无非就是date.before(date1)或者是date.after(date2)来进行判断哪个日期在前,哪个日期在后,一般而言,对于同一天的日期比较也没什么问题,这两个方法也能返回正常值,但对于如下的两个日期比较,却成功的“骗”过了before和after

    public static void compareDate() throws ParseException {

    //当前月份为2020年11月

    Date date = new Date();

    date.setDate(1);

    date.setHours(0);

    date.setMinutes(0);

    date.setSeconds(0);

    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

    String mpdateStr = "2020-11-01";

    Date mpDate = format1.parse(mpdateStr);

    if(mpDate.before(date) ) {

    System.out.println("mpdate is before");

    } else {

    System.out.println("mpdate is after");

    }

    }

    按照代码逻辑来看,进行比较的两个日期都是2020-11-01,使用before应该是会返回false的,故应该打印 mpdate is after

    但结果如下:

    a0d2f73248ef

    输出的 mpdate is before,为啥呢?首先我们先看下before的实现原理

    a0d2f73248ef

    并没有类似<=的操作,所以比较两个相等的值肯定不会返回true

    然后我们通过源码可以看到before对比的就是两个日期的时间戳,现在我们把两个日期的时间戳来打印出来看下

    a0d2f73248ef

    这里我们可以明现看到date是要比mpdate多了751毫秒,所以此时的before和after是能够比较出两个值谁打谁小,那么针对这个问题我们怎么解决呢?

    上代码!

    public static void compareDate2() throws ParseException {

    //当前月份为2020年11月

    Date time = new Date();

    Calendar cal = Calendar.getInstance();

    cal.setTime(time);

    cal.set(Calendar.DAY_OF_MONTH, 1);

    cal.set(Calendar.HOUR_OF_DAY, 0); //时

    cal.set(Calendar.MINUTE, 0); //分

    cal.set(Calendar.SECOND, 0); //秒

    cal.set(Calendar.MILLISECOND, 0); //毫秒

    Date date = cal.getTime();

    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

    String mpdateStr = "2020-11-01";

    Date mpDate = format1.parse(mpdateStr);

    if(mpDate.before(date) ) {

    System.out.println("mpdate is before");

    } else {

    System.out.println("mpdate is after");

    }

    System.out.println("mpDate:" + mpDate.getTime());

    System.out.println("date:" + date.getTime());

    }

    此时我们通过Calendar来强制设置时间的毫秒数为0,那么我们再看下控制台的输出:

    a0d2f73248ef

    我们可以看到,这个时间戳就是我们原本想要的数据,最终打印的结果也是我们的预期结果了

    兄弟们,共勉!!!!

    展开全文
  • Java日期比较

    2020-11-23 10:54:54
    还不会怎么比较日期?那就快来看看吧! 在Java中如何比较日期 在 Java 中有多种方法可以比较日期日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在Java中,Date是一个对象,包含多个...

    还不会怎么比较日期?那就快来看看吧!

    在Java中如何比较日期

    在 Java 中有多种方法可以比较日期,日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在Java中,Date是一个对象,包含多个用于比较的方法,任何比较两个日期的方法本质上都会比较日期的时间。

    本文主要介绍以下五种方式:

    使用 Date.compareTo()
    使用 Date.before()、Date.after() 和 Date.equals()
    使用 Calender.before()、Calender.after() 和 Calender.equals()
    使用 getTime()
    使用 Java 8 的 isBefore()、isAfter()、isEqual() 和 compareTo()

    1、Date.compareTo()

    Date 实现了 Comparable,因此两个日期可以直接用 compareTo 方法进行比较。

    1. 如果两个日期相等,则返回值为0。
    2. 如果 Date1 在 Date2 参数之后,则返回值大于0。
    3. 如果 Date1 在 Date2 参数之前,则返回值小于0。
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo {
    
        public static void main(String[] args) throws ParseException {
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = sdf.parse("2019-10-01");
            Date date2 = sdf.parse("2019-10-17");
    
            System.out.println("date1 : " + sdf.format(date1));
            System.out.println("date2 : " + sdf.format(date2));
    
            if (date1.compareTo(date2) > 0) {
                System.out.println("Date1 is after Date2");
            } else if (date1.compareTo(date2) < 0) {
                System.out.println("Date1 is before Date2");
            } else if (date1.compareTo(date2) == 0) {
                System.out.println("Date1 is equal to Date2");
            } else {
                System.out.println("咋到这的?");
            }
    
        }
    
    }
    
    date1 : 2019-10-01
    date2 : 2019-10-17
    Date1 is before Date2
    

    2、Date.before()、Date.after()、Date.equals()

    可以用 equals、after 和 before 方法比较日期。

    1. 如果两个日期在同一时间点,equals方法将返回true。
    2. 如果 date1 在 date2 之前,before 返回 true,否则返回 false。
    3. 如果 date2 在 date1 之后,after 返回 true,否则返回 false。
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo2 {
    
        public static void main(String[] args) throws ParseException {
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = sdf.parse("2019-10-01");
            Date date2 = sdf.parse("2019-10-17");
    
            System.out.println("date1 : " + sdf.format(date1));
            System.out.println("date2 : " + sdf.format(date2));
            
            if (date1.after(date2)) {
                System.out.println("Date1 is after Date2");
            }
    
            if (date1.before(date2)) {
                System.out.println("Date1 is before Date2");
            }
    
            if (date1.equals(date2)) {
                System.out.println("Date1 is equal Date2");
            }
        }
    }
    
    
    date1 : 2019-10-01
    date2 : 2019-10-17
    Date1 is before Date2
    

    3、Calender.before()、Calender.after()、Calender.equals()

    Calendar 类也有 compareTo、equals、after 和 before 方法,工作方式与上面描述的 Date 类的方法相同。因此,如果日期信息保存在 Calendar 类中,则不需要提取日期来执行比较。

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class DateDemo3 {
    
        public static void main(String[] args) throws ParseException {
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = sdf.parse("2009-12-31");
            Date date2 = sdf.parse("2010-01-31");
    
            System.out.println("date1 : " + sdf.format(date1));
            System.out.println("date2 : " + sdf.format(date2));
    
            Calendar cal1 = Calendar.getInstance();
            Calendar cal2 = Calendar.getInstance();
            cal1.setTime(date1);
            cal2.setTime(date2);
    
            if (cal1.after(cal2)) {
                System.out.println("Date1 is after Date2");
            }
    
            if (cal1.before(cal2)) {
                System.out.println("Date1 is before Date2");
            }
    
            if (cal1.equals(cal2)) {
                System.out.println("Date1 is equal Date2");
            }
        }
    }
    
    date1 : 2019-10-01
    date2 : 2019-10-17
    Date1 is before Date2
    

    4、getTime()

    可以直接比较两个日期的时间点。这是对两种原始数据类型的比较,因此可以使用 < 、 > 和 == 来比较。

    在比较日期之前,必须使用前面创建的 Date 对象中的数据来创建长整型。

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo4 {
    
        public static void main(String[] args) throws ParseException {
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
            Date date1 = sdf.parse("2019-10-01");
            Date date2 = sdf.parse("2019-10-17");
            
            System.out.println("date1 : " + sdf.format(date1));
            System.out.println("date2 : " + sdf.format(date2));
    
            long time1 = date1.getTime();
            long time2 = date2.getTime();
    
            if (time1 > time2) {
                System.out.println("Date1 is after Date2");
            } else if (time1 < time2) {
                System.out.println("Date1 is before Date2");
            } else if (time1 == time2) {
                System.out.println("Date1 is equal to Date2");
            } else {
                System.out.println("咋到这的?");
            }
        }
    }
    
    date1 : 2019-10-01
    date2 : 2019-10-17
    Date1 is before Date2
    

    5、Java 8 中的 isBefore()、isAfter()、isEqual()、compareTo()

    在 Java 8 中,可以使用新的 isBefore()、isAfter()、isEqual() 以及 compareTo() 来比较 LocalDate、LocalTime 和 LocalDateTime。

    import java.time.LocalDate;
    import java.time.format.DateTimeFormatter;
    
    public class DateDemo5 {
    
        public static void main(String[] args) {
    
            DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate date1 = LocalDate.of(2019, 10, 01);
            LocalDate date2 = LocalDate.of(2019, 10, 17);
    
            System.out.println("date1 : " + sdf.format(date1));
            System.out.println("date2 : " + sdf.format(date2));
    
            System.out.println("Is...");
            if (date1.isAfter(date2)) {
                System.out.println("Date1 is after Date2");
            }
    
            if (date1.isBefore(date2)) {
                System.out.println("Date1 is before Date2");
            }
    
            if (date1.isEqual(date2)) {
                System.out.println("Date1 is equal Date2");
            }
    
            System.out.println("CompareTo...");
            if (date1.compareTo(date2) > 0) {
                System.out.println("Date1 is after Date2");
            } else if (date1.compareTo(date2) < 0) {
                System.out.println("Date1 is before Date2");
            } else if (date1.compareTo(date2) == 0) {
                System.out.println("Date1 is equal to Date2");
            } else {
                System.out.println("咋到这的?");
            }
        }
    }
    
    date1 : 2019-10-01
    date2 : 2019-10-17
    Is...
    Date1 is before Date2
    CompareTo...
    Date1 is before Date2
    

    最后总结

    本文主要讲解了在 Java 中比较日期的几种常用方法,可以自己实际操作一下。

    参考:https://www.cnblogs.com/wupeixuan/p/11695256.html

    展开全文
  • 前言在Java开发中经常会用到...日期比较的几种方式1.Date的before、afterDate1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于...

    前言

    在Java开发中经常会用到日期的比较,像给定一个日期和当前日期进行比较,或者给定两个日期进行时间先后的比较,还有取两个日期之间的记录等等。

    04bcfbd5c51a28e6daf3f78381fd18b8.png

    日期比较的几种方式

    1.Date的before、after

    Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;

    Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false; 特别注意:如果业务数据存在相等的时候,而且相等时也需要做相应的业务判断或处理时,请注意。

    2.sql中的between、and

    示例:

    1.select * from product where create_time between '2017-10-03 00:00:00' and '2018-03-10 10:28:40'

    2.select * from product where create_time >='2017-10-03 00:00:00' and create_time

    <='2018-03-10 10:28:40'

    说明:SQL Server中 between and是包括边界值的,not between不包括边界值,不过如果使用between and 限定日期需要注意,如果and后的日期是到天的,那么默认为00:00:00 例如:and 后的日期为2017年04月06日,就等价于2017-04-06 00:00:00 ,那么2017-04-06 15:10:34的数据就查询不到了,需要在后面补上 ' 23:59:59',注意日期和时间中间要留一个空格。

    结语

    在java开发中,有的日期比较适合在java中进行,有的适合在sql语句中限定,怎么合适怎么来。

    展开全文
  • 《Java编程技巧1001条》第9章 java中的日期函数第369条 用after,before,equres 比较日期369 ComparingDates with after, before, andequals Methods369 利用after、before、和equals方法来比较日期Java provide ...
  • 之前有面试到两个日期的大小比较方式,现在整理一下几种方法。例子:String beginTime=new String("2017-06-09 10:22:22");String endTime=new String("2017-05-08 11:22:22");1 直接用Date自带方法before()和after...
  • 在 Java 中有多种方法可以比较日期日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在Java中,Date是一个对象,包含多个用于比较的方法,任何比较两个日期的方法本质上都会比较日期的...
  • JavaScript 日期比较

    2013-12-02 15:11:53
    比较日期 日期对象也可用于比较两个日期。 下面的代码将当前日期与 2008 年 8 月 9 日做了比较: var myDate = new Date(); myDate.setFullYear(2008,7,9); var today = new Date(); if (myDate>today){ ...
  • //直接用Date自带方法before()和after()比较public static void main(String[] args) throws ParseException {String beginTime=new String("2017-05-08 11:22:22");String zhongjianTime=new String("2017-06-08 10...
  • java日期比较

    2020-03-06 16:06:41
    例子: String beginTime=new String(“2017-06-09 10:22:22”);     String endTime=new String(“2017-05-08 ...直接用Date自带方法before()和after()比较 SimpleDateFormat df = new SimpleDateF...
  • 在 Java 中有多种方法可以比较日期日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在Java中,Date是一个对象,包含多个用于比较的方法,任何比较两个日期的方法本质上都会比较日期的...
  • 日期大小比较

    2019-06-15 08:49:10
    实用正则表达式判断日期格式是否正确,转换成Date类型和当前日期比较大小 /** * compare to current date * * @param date * @return */ public static boolean isBefore(String date) { if (!...
  • 展开全部例子:String beginTime=new String("2017-06-09 10:22:22");String endTime=new String(...直接用Date自带方法before()和after()比较62616964757a686964616fe78988e69d8331333366303063SimpleDateFormat...
  • 前言 比较日期大小是比较常用的一个操作了,java、js、sql中都经常用到,下面来...2.可以用before()比较,返回boolean; 可以用after()比较,返回boolean; 可以用compareTo()比较,返回-1,表示小于;返回0,表示.
  • java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。 如果两个日期相等,则返回值为0。 如果Date在date参数之后,则返回值大于0。 如果Date在date参数之前,则返回值小于0。 @Test void ...
  • java Calendor 日期比较

    千次阅读 2011-09-15 16:18:33
    Calendor 日期比较使用before(Object when) 和after(Object when) 函数。 1、只能是两个Calendor实例相比较 这里虽然参数when是Object类型,似乎只要是日期类型的对象都可以,但其实不然,JAVADOC有说明: if
  • 之前有面试到两个日期的大小比较方式,现在整理一下几种方法。例子:String beginTime=new String("2017-06-09 10:22:22");String endTime=new String("2017-05-08 11:22:22");1 直接用Date自带方法before()和after...
  • 前言比较日期大小是比较常用的一个操作了,java、js、sql中都经常用到,下面来总结一下。需要注意的主要是js比较日期大小。...3.可以用before()比较,返回boolean;可以用after()比较,返回bool...
  • Java Date日期比较

    千次阅读 2016-04-05 13:49:44
    Java 日期比较 在开发过程中,我们可能会遇到选择日期,作为筛选条件,有个开始时间,和截止时间,但是在处理相关的逻辑的过程中,我们还是需要去判断,开始时间不能比截止时间大,自己在开发过程中,总结出一些...
  • 前言比较日期大小是比较常用的一个操作了,java、js、sql中都经常用到,下面来总结一下。需要注意的主要是js比较日期大小。一、java比较日期大小1....3.可以用before()比较,返回boolean;可以用after()比较,返...
  • java中的日期比较

    2018-11-15 14:59:01
    1 直接用Date自带方法before()和after()比较 //获得当天的日期 Date startdate=getdateByi(0); // 最晚日期 当天+9天 Date enddate=getdateByi(9); //获取当前日期的前i或后i天 public Date getdateByi(int i...
  • 例子:String beginTime=new String("2017-06-09 10:22:22");String endTime=new String("2017-...直接用Date自带方法before()和after()比较SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Da...
  • Java 日期时间比较

    千次阅读 2018-12-15 12:39:31
    Java使用以下三种方法来比较两个日期: 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new ...
  • java 日期比较(compareTo)

    2016-10-17 10:39:00
    当我们要用当前的系统时间和数据库中的date比较日期的时候,如果比较的是某日期比当前日期前或者后的话,可以用after或者before方法,返回的为boolean类型,但是如果要比较这两个日期是否相等的话,就需要注意要把当前...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

日期比较before