Java常用类:时间日期

Java常用类:时间日期



Date

  • Date表示特定的瞬间,精确到毫秒

  • Date 类中的大部分方法都已经被 Calendar 类中的方法所取代

  • 示例:

    import java.util.Date;
    
    public class Demo01 {
    
        public static void main(String[] args) {
    
            //1.创建Date对象
            //今天
            Date date1 = new Date();
            System.out.println(date1.toString()); //使用toString();显示日期时间
            System.out.println(date1.toLocaleString());//toLocaleString();已过时
            //昨天
            Date date2 = new Date(date1.getTime() - (60*60*24*1000));
            System.out.println(date2.toLocaleString());//toLocaleString();已过时
    
            //2.方法
            // after(); 判断Date对象是否在指定日期之后
            // before(); 判断Date对象是否在指定日期之前
            boolean after = date1.after(date2);
            boolean before = date2.before(date1);
            System.out.println(after);
            System.out.println(before);
    
            //compareTo();比较日期
            int i = date1.compareTo(date2);
            System.out.println(i);
            //equals();比较是否相等
            boolean equals = date1.equals(date2);
            System.out.println(equals);
    
        }
    
    }
    

    输出

    Fri Apr 16 21:24:01 CST 2021
    2021年4月16日 下午9:24:01
    2021年4月15日 下午9:24:01
    true
    true
    1
    false
    

Calendar

  • Calendar 提供了获取或设置各种日历字段的方法

  • 构造方法:

    • protected Calendar();修饰符是 protected ,所以无法直接创建该对象
    • 需要通过Calendar.getInstance();来创建对象
  • Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用 getInstance() 方法创建即可

  • Calendar类对象字段类型

常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 或 Calendar.DAY_OF_MONTH 日期
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期
  • 示例:

    import java.util.Calendar;
    
    public class Demo01 {
    
        public static void main(String[] args) {
    
            //创建Calender对象
            Calendar calendar = Calendar.getInstance();
            System.out.println(calendar.getTime().toLocaleString());
            System.out.println(calendar.getTimeInMillis());//1970年到现在的毫秒值
            //获取时间信息
            //获取年
            int year = calendar.get(Calendar.YEAR);
            //获取月 0-11
            int month = calendar.get(Calendar.MONTH)+1;
            //获取日
            int day = calendar.get(Calendar.DAY_OF_MONTH);//DAY_OF_MONTH 或 DATE 都可以
            //获取小时
            int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR 是12小时样式的,HOUR_OF_DAY 是24小时样式
            //获取分钟
            int minute = calendar.get(Calendar.MINUTE);
            //获取秒
            int second = calendar.get(Calendar.SECOND);
    
            System.out.println(year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second);
    
            //修改时间
            Calendar calendar1 = Calendar.getInstance();
            calendar1.set(Calendar.DAY_OF_MONTH,15);
            System.out.println(calendar1.getTime().toLocaleString());
    
            //add();方法修改时间
            calendar1.add(Calendar.HOUR,1);
            System.out.println(calendar1.getTime().toLocaleString());
    
            //getActualMaximum();获取当月日期最大天数
            //getActualMinimum();获取当月日期最小天数
            int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
            int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);
            System.out.println(max);
            System.out.println(min);
    
    
        }
    
    }
    
    
  
输出
  
  ```java
  2021年4月16日 下午11:38:43
  1618587523635
  2021年4月16日23:38:43
  2021年4月15日 下午11:38:43
  2021年4月16日 上午12:38:43
  30
  1

SimpleDateFormat

  • SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类

  • 进行格式化(日期->文本),解析(文本->日期)

  • 常用的时间模式字母

    字母 日期或时间 示例
    y 2021
    M 年中的月份 04
    d 月中的天数 17
    H 1天中小时数(0-23) 22
    m 分钟 34
    s 57
    S 毫秒 233
  • 示例:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Demo01 {
    
        public static void main(String[] args) throws Exception {
    
            //1.创建SimpleDateFormat对象
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            //2.创建Date对象
            Date date = new Date();
            //格式化Date对象(时间->字符串)
            String format = simpleDateFormat.format(date);
            System.out.println(format);
            //解析(字符串->时间)
            Date parse = simpleDateFormat.parse("2020年02月20日 20:02:20");
            System.out.println(parse);
    
    
        }
    
    }
    

    输出

    2021年04月17日 10:23:23
    Thu Feb 20 20:02:20 CST 2020
    

*拓展:输入日期查看日历

  • 需求:输入日期返回日历

  • 示例:

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Assignment {
        public static void main(String[] args) throws Exception {
    
            //读入字符串
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入你想要查看的日期(例如:2021-04-17 或 2021-4-17):");
            String strDate = scanner.next();
            //String --> Calendar:
            //String --> Date
            //"yyyy-MM-dd"为设置时间格式
            Date date = new SimpleDateFormat("yyyy-MM-dd").parse(strDate);
            //Date --> Calendar
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
    
            //打印表头(星期)
            System.out.println("日\t一\t二\t三\t四\t五\t六");
            //获取半月的最大天数
            int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            //获取当前日期的日
            int nowDay = cal.get(Calendar.DAY_OF_MONTH);
    
            //将日期调为本月的1号
            cal.set(Calendar.DAY_OF_MONTH,1);
            //获取本月的一号是星期几
            int currentWeek = cal.get(Calendar.DAY_OF_WEEK);
            //设置前面空出来的天数
            int day = currentWeek - 1;
    
            //引入计数器
            int count = 0;
    
            //在日期前打印空格
            for (int i = 0; i < day; i++) {
                System.out.print("\t");
            }
            //空出来的也要计入计数器
            count += day;
    
            //遍历天数(从1号到 maxDay)
            for (int i = 1; i <= maxDay; i++) {
                if (i == nowDay) {
                    System.out.print(i+"*\t");//在日历中标记当前日期
                }else {
                    System.out.print(i+"\t");
                }
                count++;//每在控制台输出一个数字,计数器+1
                if (count%7 == 0) {
                    System.out.println();
                }
            }
    
        }
    
    }
    

    控制台

    请输入你想要查看的日期(例如:2021-04-17 或 2021-4-17):2021-4-17
    日	一	二	三	四	五	六
    				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
    
posted @ 2021-04-17 10:27  D..T  阅读(145)  评论(0编辑  收藏  举报