java日期时间类Date SimpleDateFormat Calendar

日期时间类

1. Date类

1.1 实例化方法

  1. Date() 获取当前时间
  2. Date()带参数,参数有以下五种
new Date("month dd,yyyy hh:mm:ss");
new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);

注意这里的参数都是从1970年一月一日零点开始的,参数代表的是加数

1.2 Date类方法

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。(返回的也是毫秒数)
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。

boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false。

boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。

Object clone( ) 返回此对象的副本。

int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。

boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。

long getTime( )返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

int hashCode( )返回此对象的哈希码值。

void setTime(long time)** 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。

String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz:yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

1.3 代码示例

   public static void main(String[] args) {
        //实例化和toString方法,(实例化里边的参数是加数,从1970.1.1开始加)
        Date date = new Date();
        System.out.println(date.toString());
        Date date1 = new Date(2022, 4, 19);//这里返回是1970.1.1加参数
        System.out.println(date1.toString());

        //gettime方法,返回的是毫秒数
        long time = date.getTime();
        long time1 = date.getTime();
        System.out.println(time == time1);

        //before,after,equals
        boolean before = new Date(99, 1, 12).before(new Date(99, 1, 24));
        System.out.println(before);


    }

2. SimpleDateFormat

这个类是用来格式化时间的,相当于是一个工具,里面提供的方法也是为了让日期可以再字符串,Date,Canlendar之间相互转换

2.1 构造方法

SimpleDateFormat类可以自定义时间的形式

SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");//显示20171027格式
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");//显示2017-10-27格式
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//显示2017-10-27 10:00:00格式
SimpleDateFormat sdf4=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//显示2017年10月27日10时00分00秒格式

2.2 时间模式字母的定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwH1Bxfa-1650363384513)(C:\Users\10357\AppData\Roaming\Typora\typora-user-images\image-20220419164447079.png)]

2.3 方法

String format(Date date )方法将Date类转换成字符串,形式是创建对象的时候定义的那样

Date parse(String str)方法把字符串转换成Date类,但是这里要求字符串形式得符合形式,要么就捕获异常

3. Calendar(建议使用)

Date中很多方法都舍弃了,基本上用的都是Calendar类了

3.1 构造方法

由于Calendar类是一个抽象类,不能通过构造方法实例化,但是这个小东西留了一手,留了个getInstance方法可以返回对象(具体看3.2)

Calendar c = Calendar.getInstance();

3.2 拿到抽象类的对象时

方法一:
直接去找该抽象类的已实现的子类对象.
比如说现在我们所提到的 public abstract class Calendar
它就有已实现的子类GregorianCalendar,我们也是可以直接
Calendar rili = new GregorianCalendar();
这样我们就拿到了Calendar的对象.

方法二:
看该抽象类中是否有返回该方法实例的静态方法.
我们知道,不管这个类是否是抽象的,该类中的静态成员都是可以以 **“类.成员”**进行调用.(不用实例化该类的对象.)
而这正式另一种获取该类对象的方法,也就是该类中提供了静态方法,而且该方法的返回值就是这个类的对象.(当然,这种方法并不是所有的类中都有提供)
我们来看一下Calendar中所提供的静态方法中就有一个返回值为 static Calendar的静态方法"getInstance()".
所以说,我们想拿到Calendar的对象可以直接
Calendar rili = Calendar.getInstance();

3.3 Calendar类对象字段类型

常量描述
Calendar.YEAR年份
Calendar.MONTH月份(从0开始的,get的时候记得+1)
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期(和上面相同)
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几(1代表星期天,2代表星期一)

3.4 Calendar类的方法

方法作用
public void set(int year,int month,int date,int hourofday,int minute,int second)设置日历的年、月、日、时、分、秒。
public int get(int field)返回给定日历字段的值。
public void setTime(Date date)使用给定的Date设置此日历的时间。Date------>Calendar
public Date getTime()返回一个Date表示此日历的时间。Calendar----->Date
abstract void add(int field,int amount)按照日历的规则,给指定字段添加或减少时间量。
public long getTimeInMillies()以毫秒为单位返回该日历的时间值。

3.5 代码示例

public static void main(String[] args) throws ParseException {
        Calendar c1 = Calendar.getInstance();
        //get
        int year = c1.get(Calendar.YEAR);
        int month = c1.get(Calendar.MONTH)+1;//注意这个加一
        int day = c1.get(Calendar.DATE);
        int hour = c1.get(Calendar.HOUR);
        int minute = c1.get(Calendar.MINUTE);
        int second = c1.get(Calendar.SECOND);
        System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);

        //getTime
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date time = c1.getTime();
        System.out.println(sdf.format(time));

        //set
        //设置完整的日期
        c1.set(1999,12-1,22);//直接看弹出来的方法重载就好了
        //设置单个的参数
        c1.set(Calendar.YEAR,1999);

        //add
        c1.add(Calendar.DATE,10);
        c1.add(Calendar.DATE,-10);

        //setTime
        String str = "1999-11-22 15:00:00";
        Date date = sdf.parse(str);
        c1.setTime(date);
        System.out.println(sdf.format(c1.getTime()));
    }

3.6 String,Date,Calendar相互转化

SimpleDateFormat里的format可以Date——>String

parse可以String——>Date

Calendar里的getTime可以Calendar——>Date

setTime可以Date——>Calendar

具体怎么转换自个琢磨去吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值