zoukankan      html  css  js  c++  java
  • 时间比较的几种方法

    经常要比较时间,但是总是忘记需要搜索,希望记录下来,加深印象

    1.使用时间戳比较时间 使用date.getTime() 获取时间戳

    注:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateCompareTest {
    
        public static void main(String[] args) throws ParseException {
    
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String stringDate = "2020-03-11 12:12:11";
            Date date = (Date) format.parse(stringDate);  
            Date time = new Date();
    
            long timeStamp1 = date.getTime();
            long timeStamp2 = date.getTime();
            System.out.println(timeStamp1);   //时间戳:1583899931000
            System.out.println(timeStamp1 > timeStamp2);  //输出false
    
        }
    }
    2. 使用Date实例的compareTo()方法。这个是比较时间,不是比较日期

    使用:date1.compareTo(date2) 。 

    返回值:如果date1小于date2, 返回-1,;如果date1 等于 date2,返回0;如果date1 大于 date2,返回1

    public class DateCompareTest {
    
        public static void main(String[] args) throws ParseException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
            String strNow = format.format(new Date());
            Date now = format.parse(strNow);
            System.out.println(now);
    
            String stringDate = "2020-03-11";  //Date时间,格式:Sun Jan 11 00:00:00 CST 2020,
            Date date = (Date) format.parse(stringDate);
            System.out.println(date);
    
            System.out.println(date.compareTo(now));   //输出-1
    
        }
    }

     

    注意,String日期格式化Date 会给他默认的时间 00:00:00

    String stringDate = "2020-03-11";  //Date时间,格式:Sun Jan 11 00:00:00 CST 2020,
    Date date = (Date) format.parse(stringDate);
    3. 使用before(); after(); 返回类型boolean
    public class DateCompareTest {
    
        public static void main(String[] args) throws ParseException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String stringDate = "2020-03-11 12:12:11";
            Date date = (Date) format.parse(stringDate);
            Date time = new Date();
    
            System.out.println(date.after(time));    //输出false
            System.out.println(date.before(time));   //输出true
        }
    }
    小知识补充

    经常看到格式化有不同的写法,不仔细看,还以为他们一样,其实还是有差别的

    • yyyy-MM-dd HH:mm:ss
    • yyyy-MM-dd HH:mm:ssS
    • yyyy-MM-dd hh:mm:ss
    SimpleDateFormat 语法SimpleDateFormat语法解释
    G 年代标志
    y
    M
    d
    h 时(在上午或下午1-12)
    H 时(一天 0~23)
    m
    s
    S 毫秒
    E 星期
    D 一年中的第几天
    F 一个月的第几个星期几
    w 一年中的第几个星期
    W 一月中的第几个星期
    a 上午 / 下午 标记符
    k 时 (在一天中 1~24)
    K 时 (在上午或下午 0~11)
    z 时区

    这些可以自己搭配使用

    public class SimpleDateFormatTest {
        public static void main(String[] args) {
            Date now = new Date();
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            SimpleDateFormat format3 = new SimpleDateFormat("yyyy年MM月dd日 一年中的第 D 天 一年中第w个星期 一月中第W个星期");
            System.out.println(format1.format(now));  //输出 2020/03/12 14:38:34
            System.out.println(format2.format(now));  //输出 2020年03月12日 14时38分34秒
            System.out.println(format3.format(now));  //输出2020年03月12日 一年中的第 72 天 一年中第11个星期 一月中第2个星期
        }
    }
    

      

     

  • 相关阅读:
    出现( linker command failed with exit code 1)错误总结 (转)
    iOS 面试题
    iOS 网络-深入浅出 -> 三方SDWebImage
    免费的论文查重网站
    关于GCD中单例的实现,不仅仅是 dispatch_once(视图完整版)
    Objective
    iOS 实现代码编写中 字典属性的可读性
    iOS Category 和 Protocol 中的 Property 你们真的会了么?
    iOS 中的观察者模式之通知中心
    iOS中的 观察者模式 之 KVO
  • 原文地址:https://www.cnblogs.com/eathertan/p/12469209.html
Copyright © 2011-2022 走看看