Java核心知识:日期和时间总结 -- Date、DateFormat、Calendar

Date

java.util.Date 表示特定的瞬间,精确到毫秒。l例如1970-01-01 00:00:00 到现在的毫秒数。

构造方法:

  1. Date():无参构造,表示当前时间。
  2. Date(long date):传递毫秒值,转化为Date日期。

常用方法:

  1. boolean equals(Object date):用此方法的Date对象和指定日期相等时候返回true,否则返回false。
  2. long getTime( ):返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
  3. String toString( ):把此 Date 对象转换为String。

示例:

import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
    	// 获取当前时间
        Date t1 = new Date();
        System.out.println(t1);

        Date t2 = new Date(0L);
        System.out.println(t2);
        Date t3 = new Date(1136213819569L);
        System.out.println(t3);

        System.out.println(t1.equals(t2));
        System.out.println(t3.getTime());  // 1136213819569
        System.out.println(t1.toString());  // Tue Jul 19 23:38:49 CST 2022

    }
}

DateFormat

DateFormat是一个抽象类,用于日期格式转化,在日期和文本之间相互转换。

  1. String format(Date date):把日期转为字符串
  2. Date parse(String source):把字符串转为日期

SimpleDateFormatDateFormat的子类,也有上述两个方法,但是注意parse会抛出异常,必须处理,后面还会详细说异常。

构造方法:SimpleDateFormat(String pattern):用给定的模式和默认的语言环境日期格式构造。其中pattern模式有以下注意几类。

  • y 年
  • M 月
  • d 日
  • H 时
  • m 分
  • s 秒

示例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatTest {
    public static void main(String[] args) throws ParseException {
        // 定义格式化器
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date date = new Date();  // 当前日期
        System.out.println(date);  // Sun Dec 26 11:29:05 CST 2021

        // 日期转为固定格式的字符串
        String dateText = dateFormat.format(date);
        System.out.println(dateText);  // 2021-12-26 11:29:05

        // 固定格式的字符串转为日期
        Date date2 = dateFormat.parse(dateText);
        System.out.println(date2);  // Sun Dec 26 11:31:25 CST 2021

    }
}

Calendar

java.util.Calendar 日历类,是一个抽象类。

在Date后出现,替换了很多Date的方法。里面封装了很多静态属性和静态方法,有很多操作日历的方法。

Calendar是抽象类不能实例化,使用的时候通过getInstance来获取子类使用。

常用成员方法:

  • public int get(int field):返回日历给定字段的值
  • public void set(int field, int value):将给定字段设定成指定值
  • public abstract void add(int field, int amount):根据一定规则,把日历的指定的字段减去或加上时间量
  • public Date getTime():返回一个表示Calendar时间值得Date对象。

说明:Calendar类静态属性字段可以用int的值表示,如下,

YEAR = 1; MONTH = 2; DATE = 5; HOUR = 10; MINUTE = 12; SECOND = 13。

Calendar类对象字段类型:

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期,和上面的字段意义完全相同
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几

示例:

package base15_time.calendar;

import java.util.Calendar;
import java.util.Date;

public class CalendarTest {
    public static void main(String[] args) {
        // getInstance来获取Calendar的子类
        Calendar calendar = Calendar.getInstance(); // 多态

        // 获取年月日等
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);  // 2021
        int month = calendar.get(Calendar.MONTH);
        System.out.println(month);  // 11,比中国的月份少1,实际中国是12月
        int date = calendar.get(Calendar.DATE);
        System.out.println(date);  // 26
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));  // 26
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 1,这里的1实际是星期日,0-6表示星期六到星期一

        // 设置年月日
        System.out.println("================");
        calendar.set(Calendar.YEAR, 2022);
        calendar.set(Calendar.MONTH, 0);
        calendar.set(Calendar.DATE, 40);
        System.out.println(calendar.get(Calendar.YEAR));  // 2022
        System.out.println(calendar.get(Calendar.MONTH));  // 0
        System.out.println(calendar.get(Calendar.DATE));  // 1
        calendar.set(2022, 0, 1);  // 一次性设置多个

        // 增加减少指定时间范围
        System.out.println("=================");
        calendar.add(Calendar.YEAR, -2);  // 减2年
        calendar.add(Calendar.MONTH, 3);  // 加3个月
        calendar.add(Calendar.DATE, 20);  // 加20天
        System.out.println(calendar.get(Calendar.YEAR));  // 2020
        System.out.println(calendar.get(Calendar.MONTH));  // 3
        System.out.println(calendar.get(Calendar.DATE));  // 21

        // 把日历类转化为日期
        System.out.println("=================");
        Date date2 = calendar.getTime();
        System.out.println(date2);  // Tue Apr 21 13:53:02 CST 2020

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ethan-running

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

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

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

打赏作者

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

抵扣说明:

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

余额充值