美文网首页
Java日期处理那点事儿(附词破阵子)

Java日期处理那点事儿(附词破阵子)

作者: 李逍遥2018 | 来源:发表于2019-01-05 10:26 被阅读6次
           **破阵子.为程序员赋壮词以寄**
    
    醉里挑灯按键,梦回开机编程。
    八千行分成函数,五十类遥相呼应,煮酒论英雄。
    键盘敲得飞快,鼠标连击铮鸣。
    了却项目烂尾事,赢得客户多好评。幸白发未生。
    

    ​ 先风骚地赋词一首,然后给大家抛出一个貌似极其容易的问题,如何把"03 29 2018 10:08AM"转成Date类型?我想很多朋友对此嗤之以鼻,不屑一顾。但不服来辩,- -!自己动手写一个试试,看看能不能转成功?

    ​ java里经常会遇到日期时间处理的问题,这类问题主要包括日期转字符串、字符串转日期、日期计算、判断星期几、日期往前、往后推几天等,这类问题可能会令初学者手忙脚乱,一通百度。其实这类问题归纳后,通过SimpleDateFormat 和Calendar这两个类主要几个api即可解决,接下来就和大家一起看一下这两个类的常见用法。

    一、SimpleDateFormat类的用法

    ​ SimpleDateFormat主要用途有二,一是通过其format(Date date)方法将任意java.util.Date按照指定的格式转化成String字符串,二是通过其parse(String datestr)将时间格式的字符串转化成java.util.Date.

    1.1 Date转成字符串

    ​ 这种场景一般用来按照格式要求显示日期时间,示例代码如下

    Date currentDate = new Date();
    System.out.println("直接打印date是不爽的--->:" + currentDate);
    format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    System.out.println("按12小时制格式化显示--->:" + format.format(currentDate));
    format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("按24小时制格式化显示--->:" + format.format(currentDate));
    
    运行结果如下:
    
    直接打印date是不爽的--->:Sat Jan 05 23:10:40 CST 2019
    按12小时制格式化显示--->:2019-01-05 11:10:40
    按24小时制格式化显示--->:2019-01-05 23:10:40
    

    1.2 字符串转换成Date类型

    ​ 这种场景是把字符串格式的时间(如前端日期控件的值),转换成Date类型,进行运算或处理(比如日期比较),示例代码如下

    String test = "2018-12-31 08:10:32";
    format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date testDate = format.parse(test);
    System.out.println("testDate--->:" + testDate);
    

    ​ 运行结果如下:

    testDate--->:Mon Dec 31 08:10:32 CST 2018
    

    1.3 Date的比较运算

    ​ 第一种方法,用after(Date date)方法比较,示例代码如下

    Date date1 = new Date();
    Date date2 = new Date();
    if(date2.after(date1))
    {
        System.out.println("date2当然比date1大了");
    }
    

    ​ 第二种方法,用compareTo(Date date)方法,示例代码如下

    Date date1 = new Date();
    Date date2 = new Date();
    int flag = date1.compareTo(date2);
    

    ​ flag是比较结果,它有3个数值-1,0,1。如果是0表示两个日期相等;如果是-1,表示date1小;如果是1,表示date1大。

    ​ 第三种方法,转化成毫秒数比较,示例代码如下

    long long1 = date1.getTime();
    long long2 = date2.getTime();
    if(long1 > long2)
    {
        System.out.println("不服就比比谁大!");
    }
    

    1.4 小结

    ​ 亲!你会用了吧!那么文章开头提出的那个问题,你能解决了吗?嘿嘿!试试就知道恐怕还是不行!因为日期时间的格式太多了,全世界各地各不相同,因此那个问题还得想想办法!想知道正确的答案吗?赶紧给哥点赞去,没赞哥都没动力写答案了!- -!

    二、Calendar类的用法

    ​ Calendar类很好很强大,主要用于日期的计算,这里我给大家写一个日期往后推3天的例子,道理都是相通的,相信大家能举一反三!代码如下

    Date myDate = new Date();
    System.out.println("myDate--->:" + myDate);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(myDate);
    calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + 3);
    Date afterDate = calendar.getTime();
    System.out.println("after--->:" + afterDate);
    

    ​ 结果如下

    myDate--->:Sat Jan 05 09:09:42 CST 2019
    after--->:Tue Jan 08 09:09:42 CST 2019
    

    相关文章

      网友评论

          本文标题:Java日期处理那点事儿(附词破阵子)

          本文链接:https://www.haomeiwen.com/subject/rpkrrqtx.html