栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

日期相关类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

日期相关类

时间日期常用方法
  • java 小知识点
    • Objects.equals()方法容忍空指针
    • 日期相关类
      • Date方法
      • Date的toLocaleString()方法
      • DateFormat类(日期时间格式化)
    • 利用毫秒求两个日期的差值(getTime()方法)
    • Calendar类

java 小知识点 Objects.equals()方法容忍空指针

equals方法 可以比较String(默认重写)和对象(需要重写)。重写前,比较两个对象的地址值,重写后比较的是两个对象的属性值。
Objects类是对象的工具类。

    public static void main(String[] args) {
        //Objects.equals()方法容忍空指针
        String s1 = null;
        String s2 = "abc";
        System.out.println(s1.equals(s2));//会报空指针
        System.out.println(s2.equals(s1));//会报空指针;//.queals()括号中为null的时候也不会报空指针
        System.out.println(Objects.equals(s1,s2));//不会报空指针,作用相同
    }
日期相关类

hh:mm:ss:12小时制
HH:mm:ss:24小时制

    public static void main(String[] args) {
        long millis = System.currentTimeMillis();//时间原点到现在的毫秒数
        SimpleDateFormat format12 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//转换时间格式为12小时制
        SimpleDateFormat format24 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//转换时间格式为24小时制
        Date dateMillis = new Date(millis);
        System.out.println("当前毫秒数" + millis);
        System.out.println("当前年月日时分秒(12小时制):" +format12.format(dateMillis));
        System.out.println("当前年月日时分秒(24小时制):" +format24.format(dateMillis));
    }

输出为

当前毫秒数1635165778512
当前年月日时分秒(12小时制):2021-10-25 08:42:58
当前年月日时分秒(24小时制):2021-10-25 20:42:58
Date方法

Date有参构造方法:转换毫秒为年月日时分秒
Date无参构造方法:当前系统时间

    public static void main(String[] args) {
        //Date 会自动转换当前所在时区
        Date date = new Date();
        Date d1 = new Date(0l);
        System.out.println("无参数-->当前系统时间:"+date);
        System.out.println("0毫秒对应的年月日时分秒:"+d1);
    }

输出为:

无参数-->当前系统时间:Mon Oct 25 21:06:19 CST 2021
0毫秒对应的年月日时分秒:Thu Jan 01 08:00:00 CST 1970
Date的toLocaleString()方法
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        System.out.println("date没转换:"+date);
        System.out.println("date转换了:"+date.toLocaleString());
    }

输出为:

date没转换:Tue Oct 26 20:25:56 CST 2021
date转换了:2021-10-26 20:25:56
DateFormat类(日期时间格式化)

DateFormat, MessageFormat(格式化字符串), NumberFormat (格式化字符串)
DateFormat类是抽象类,无法直接使用,我们使用其子类SimpleDateFormat。
1.format方法 -->字符串

    public static void main(String[] args) {
        //format方法:Date日期格式化为字符串
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String str = simpleDateFormat.format(date);
        System.out.println("Date未格式化时间:"+date);
        System.out.println("SimpleDateFormat格式化时间:"+str);
    }

输出为

Date未格式化时间:Mon Oct 25 21:28:01 CST 2021
SimpleDateFormat格式化时间:2021-10-25 21:28:01

2.parse方法 -->Date日期

    public static void main(String[] args) throws ParseException {
        //parse方法:将符合模式的字符串解析成Date日期
        //ParseException解析异常,字符串和构造方法中的模式不一样,就会抛出此异常
        //解决throws或try catch
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //Date date = simpleDateFormat.parse("1989年7月15日 21时35分01秒");//会报.ParseException
        Date date = simpleDateFormat.parse("1989-7-15 21:35:01");
        System.out.println(date);
    }

输出为

Sat Jul 15 21:35:01 CDT 1989
利用毫秒求两个日期的差值(getTime()方法)
    
    public static long diffDays(Date d1, Date d2){
        long time1 = d1.getTime();
        long time2 = d2.getTime();
        long days = (time1-time2)/1000/60/60/24;
        return days;
    }
    
    public static long diffDays(String d1, String d2) throws ParseException {
        SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = simpleDate.parse(d1);
        Date date2 = simpleDate.parse(d2);
        long time1 = date1.getTime();
        long time2 = date2.getTime();
        long days = (time1 - time2)/1000/60/60/24;
        return days;
    }
Calendar类
//Calendar类的四种常用方法:get/set/add/getTime
    public static void main(String[] args) throws ParseException {
        Calendar c = Calendar.getInstance();//静态方法getInstance(),返回了Calendar类的子类对象
        int year = c.get(Calendar.YEAR);//get年
        c.set(Calendar.YEAR,1989);//set年
        int newYear = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);//get月(0-11月)
        int date = c.get(Calendar.DATE);//get日
        int day = c.get(Calendar.DAY_OF_MONTH);//get月中几号
//        c.add(Calendar.YEAR,2);//add增加
//        c.add(Calendar.YEAR,-2);//add减少
        Date date1 = c.getTime();//日期 输出为Thu Oct 26 20:11:17 CST 1989
        System.out.println(date1);
        System.out.println("Calendar日历--年"+year);
        System.out.println("Calendar日历--set设置后的年"+newYear);
        System.out.println("Calendar日历--月"+(month+1));
        System.out.println("Calendar日历--日"+date);
        System.out.println("Calendar日历--月中几号"+day);
    }

注意:
Calendar月份是0到11,如果set给它12的是输出是0

    public static void main(String[] args) throws ParseException {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.MONTH,12);
        System.out.println(c.get(Calendar.MONTH));
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号