• 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
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    Android 9.0 屏蔽设备的定位功能
    282_WEB_对于注册、数据data_callback中进行处理的理解
    CMakeLists.txt新手教程
    汽车冲压车间的RFID技术设计解决方案
    使用Eclipse创建一个简单的servlet项目
    【Java 进阶篇】用JSTL玩转Java:了解JSTL常用标签
    SCS【2】单细胞转录组 之 cellranger
    多条件变量应用--传送与搬运问题
    AltiumDesigner原理图编译错误报告信息解释
    nginx与tomcat绑定联合工作配置实例(内容来自网上,学习笔记,仅供交流学习使用无商业目的,如有侵权,通知我立马删除)
  • 原文地址:https://blog.csdn.net/qq_43745578/article/details/125882833