Java第五章第3节:常用实用类 时间和日期 实验+图解讲解

简介

👨‍💻个人主页:@云边牧风
👨‍🎓小编介绍:欢迎来到云边牧风破烂的小星球🌝
📋专栏:Java基础知识
🔑本章内容:Java常用实用类
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~

接着上一节字符串的处理,这节主要是Java的时间和日期

一、时间和日期

1.1概念

Java中,表达日期需要用到以下几个常用类:

java.util. Date
表示 日期
具体类

 

java.util. Calendar
表示 日历
抽象类 java 提供了 java.util. GregorianCalendar 作为其具体类

java.text. DateFormat
表示 日期显示格式
抽象类 Java 提供了 java.text. SimpleDateFormat 作为其具体类

 

 另外,还有Time类表示具体时间

(由于 Date Calendar 类也可以操作时间,因此 Time 类使用频率相对较低)

1.2DateCalendar

最早的 JDK 只有 Date ,没有 Calendar ,由于 Date 类存在设计缺陷 ,因此逐渐 Calendar 类代替

 

目前, Date 类只有有限的几个方法可以使用,出于向下兼容性考虑, Java 仍然保留了 Date 类的原生方法,但是被标识为“ 已废弃 ”, 不建议使用

 

Time 类应用情况与 Date 类情况类似

1.2.1Date类 

获取当前日期

 Date d = new Date();

    如:System.out.println(d);

import java.util.Date;
public class Main {
    public static void main(String[] args){
        Date d = new Date();

        System.out.println(d);

    }
}

 输出为:Fri Oct 06 23:18:55 CST 2023

设置日期

 d.setYear(81);//代表相距1900年的年数

 d.setMonth(9);//0代表1

 d.setDate(24);//天数

得到的日期为:19811024

 

获取日期

 d.getXXX();

1.2.2Calendar类

获取当前时间

使用 Calendar 类的 static 方法 getInstance () 可以初始化一个日历对象,默认指向 当前时间 ,如:
Calendar  c = Calendar.getInstance ();

   System.out.println(c.getTime());

import java.util.Calendar;
public class Main {
    public static void main(String[] args){
        Calendar c = Calendar.getInstance();
        System.out.println(c.getTime());

    }
}

以上代码得到:Fri Oct 06 23:23:56 CST 2023

 

设置日历的设定日期

void set ( int year,int month, int date );
void set ( int year,int month, int date ,

                  int hour, int minute,int second);

void setTime (Date d);

 如:

c.set(2015,5,4);// 0 代表 1
c.set(194,4,10);// 194 代表公元 194
c.setTime (new Date());

 

获取日历的设定日期信息

int get ( int field ) :可以获取有关年份、月份、小时、星期等信息,参数 field 的有效值由 Calendar 的静态常量指定 ,例如: calendar.get ( Calendar.MONTH );
getTime () :返回一个 Date 对象
getTimeInMillis () :返回长整数,表示 距离 1970 1 1 日零时零分零秒的毫秒数
import java.util.*;
public class Main {
    public static void main(String[] args){
        Calendar calendar=Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR),
                month = calendar.get(Calendar.MONTH)+1,
                day = calendar.get(Calendar.DAY_OF_MONTH),
                hour = calendar.get(Calendar.HOUR_OF_DAY),
                minute = calendar.get(Calendar.MINUTE),
                second = calendar.get(Calendar.SECOND);
        System.out.print("现在的时间是:");
        System.out.print(""+year+"年"+month+"月"+day+"日");
        System.out.println(" "+hour+"时"+minute+"分"+second+"秒");
        int y = 2012,m = 9,d = 1;
        calendar.set(y,m-1,d);  //将日历翻到2012年九月一日,注意8表示九月
        long time1 = calendar.getTimeInMillis();
        y = 2016;
        m = 7;
        day = 1;
        calendar.set(y,m-1,d);  //将日历翻到2016年七月一日
        long time2 = calendar.getTimeInMillis();
        long subDay = (time2-time1)/(1000*60*60*24);
        System.out.println(""+new Date(time2));
        System.out.println("与"+new Date(time1));
        System.out.println("相隔"+subDay+"天");

    }
}

现在的时间是:2023年10月6日 23时29分35秒
Fri Jul 01 23:29:35 CST 2016
与Sat Sep 01 23:29:35 CST 2012
相隔1399天

Calendar的常用方法

add (int  field, int amount) :增加 field 指定的年份、月份、小时等 数量
before (Object o) :是否在某日期 之前
after (Object o) :是否在某日期 之后

如: 

Calendar c = Calendar.getInstance();

c.set(2001,0,1);

c.add(Calendar.MONTH, 1);

由此我们得到:

compareTo(Calandar a):与另一日历日期比较:

相等返回 0
after a 返回 1
before a 返回 -1
import java.util.*;
public class Main {
    public static void main(String[] args){
        Calendar a= Calendar.getInstance();
        a.set(2011, 05,28, 19,50, 2); //参数为年 月 日 时 分 秒
        Calendar c= Calendar.getInstance();
        c.set(2011, 05,28, 19,50, 3);
        System.out.println(a.compareTo(c)); //a比c早,返回-1

    }
}

 -1

1.3日期的格式化

可以使用String类的静态方法format,对日期进行格式化。

format(格式化模式,日期列表):

格式化模式:是一个用双引号括起来的字符序列,该字符序列中的字符由时间格式符和普通字符所构成

String.format( “%tY%tm%td, new Date(), new Date(), new Date());

 

日期列表:用逗号分隔的Calendar对象或Date对象

String.format( “%tY%tm%td, new Date(), new Date(), new Date());

 

格式化同一日期:用含有“<”的格式符和它前面的格式符格式同一个日期

String.format( “%tY%<tm%<td, new Date());

1.4练习:

利用线程实现时钟功能

(代码可在评论区求)

结束语:

以上是Jav第五章第3节的全部内容 希望大家喜欢

下一节开始讲第五章第4节:Math类、提供任意精度整数运算BigInteger类、Random类、数字格式化

喜欢的可以点赞+关注哈 ❤

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边牧风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值