常用类---日期类

在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)。
在这里插入图片描述
我们用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年都能表示。如果想获得现在时刻的“时刻数值”,可以使用:
long now = System.currentTimeMillis();
这个“时刻数值”是所有时间类的核心值,年月日都是根据这个“数值”计算出来的。我们工作学习涉及的时间相关类有如下这些:
在这里插入图片描述

Date类

在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Date类就可以完成。

Date类的使用:

package com.bisxt.date;

import java.sql.Timestamp;
import java.util.Date;

public class TestDate {
    
    
    public static void main(String[] args) {
    
    
//        Date date = new Date(0);
//        Date date = new Date(-1000*60*60*24);//1969-12-31 8:00:00
//        Date date = new Date(-1000*60*60*24*60L);//1969-11-2 8:00:00
//        Date date = new Date(System.currentTimeMillis());//2021-1-31 16:03:00
        Date date = new Date();//2021-1-31 16:03:00  看看其无参构造函数源码就明白了!
        System.out.println(date.toString());
        System.out.println(date.toLocaleString());

        System.out.println(date.getYear());//121=2021-1900
        System.out.println(date.getMonth());//月份-1,其范围是0-11
        System.out.println(date.getDate());//日
        System.out.println(date.getDay());//星期几   今天是周日,为0.范围是0-6

        System.out.println(date.getHours());
        System.out.println(date.getMinutes());
        System.out.println(date.getSeconds());

        System.out.println("========================");
        long time = date.getTime();
        System.out.println(time);//1612080846788
        System.out.println(System.currentTimeMillis());//1612080846818

//        java.sql.Date sdate;  输出的时间只显示年月日
//        java.sql.Time stime;  输出的时间只显示时分秒
//        java.sql.Timestamp timestamp; 更精确,显示年月日时分秒

        java.sql.Timestamp timestamp1=new Timestamp(date.getTime());
        System.out.println(timestamp1);//2021-01-31 17:06:06.174

    }
}

DateFormat类

DateFormat是一个抽象类,一般使用它的子类SimpleDateFormat类来实现,主要作用就是把时间对象转化成指定格式的字符串。反之也可以把指定格式的字符串转化成时间对象。

需求1:网页注册,需要输入日期,在网页上输入的所有内容,xiaoming,23, 1999-12-23,1999/12/23,但是传送到后台接收到都是字符串 “xiaoming”, “23”, “1999-12-23”,“1999/12/23”,需要把字符串----->日期
需求2:注册成功后,在网页上显示日期,可以不同格式来显示"1999-12-23", “1999/12/23”,“1999年12月23日”,需要把日期----->字符串。

DateFormat类的使用:

package com.bisxt.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
最常用的语句:
DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
Date date=sdf.parse(str);
*/
public class TestDateFormat {
    
    
    public static void main(String[] args) {
    
    
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        String str = "1999-08-03 8:17:17";
        Date date=null;

        try {
    
    
            date = sdf.parse(str);
        } catch (ParseException e) {
    
    
            e.printStackTrace();
        }
//        System.out.println(date.toLocaleString());//1999-8-3 17:17:17
        String str2 = sdf.format(date);
        System.out.println(str2);//1999-08-03 05:17:17

        DateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 kk时mm分ss秒");
        String str3 = sdf1.format(date);
        System.out.println(str3);//1999年08月03日 05时17分17秒

        java.sql.Date sdate = java.sql.Date.valueOf("1999-08-03");
        System.out.println(sdate);

        int age = Integer.parseInt("23");
        System.out.println(age);

    }
}

关于时间和日期模式:

Calendar类

Calendar类的使用:

package com.bisxt.date;

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

public class TestCalendar {
    
    
    public static void main(String[] args) {
    
    
        //创建Calendar对象
        Calendar calendar = new GregorianCalendar();
        //输出日期中的各个部分
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));//范围是0-11
        System.out.println(calendar.get(Calendar.DATE));
        System.out.println(calendar.get(Calendar.HOUR));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

        //修改日期的各部分
        calendar.set(Calendar.YEAR,2020);
        System.out.println(calendar.get(Calendar.YEAR));
        calendar.set(Calendar.MONTH,3);
        System.out.println(calendar.get(Calendar.MONTH));

        //Date--Calendar之间的转换
        //Date ---->Calendar
        Date now = new Date();
        calendar.setTime(now);
        //Calendar---->Date
        Date now2 = calendar.getTime();
    }
}

使用Calendar类实现万年历的功能:
在这里插入图片描述

package com.bisxt.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class VisualCalender {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("请输入日期(按照格式:2021-2-1): ");
        Scanner scanner = new Scanner(System.in);
        String str=scanner.nextLine();

        DateFormat format = new SimpleDateFormat("yy-MM-dd");
        try {
    
    
            Date date = format.parse(str);
            //3.将日期转换成日历
            Calendar calender = new GregorianCalendar();
            calender.setTime(date);
            //4.把日期中的Date取出来
            int day = calender.get(Calendar.DATE);
            //5.日历变成了当月的1日
            calender.set(Calendar.DATE,1);
            //6.打印日历头信息
            System.out.println("日\t一\t二\t三\t四\t五\t六");
            //7.打印1日之前的空格(关键是知道1日是星期几)
            //注意这里i要从1开始,而不是0,范围是1-7,周六是7
            for (int i = 1; i < calender.get(Calendar.DAY_OF_WEEK); i++) {
    
    
                System.out.print("\t");
            }
            //8.打印日历1-31/28/30
            int maxDate = calender.getActualMaximum(Calendar.DATE);
            for (int i = 1; i <=maxDate; i++) {
    
    
                //8.1如果是当天,打印*
                if (i==day){
    
    
                    System.out.print("*");
                }
                //8.2打印该天
                System.out.print(i+"\t");
                //8.3如果是周六,换行
                int w=calender.get(Calendar.DAY_OF_WEEK);
                if (w==Calendar.SATURDAY){
    
    
                    System.out.println();
                }
                //8.4日历改为下一天
                calender.add(Calendar.DATE,1);
            }
        } catch (ParseException e) {
    
    
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40836864/article/details/113478598