Java的日期相关类

java.util.Date 类中提供了与系统无关的用于处理日期与时间的封装

import java.util.Date;
public class Test {
    public static void main(String[] args) {
        // 1.无参:获取目前时间
        Date date = new Date();
        System.out.println(date); // Thu Apr 07 21:32:26 CST 2022
        // 2.有参:获取 1970-1-1 08:00:00 + 参数(毫秒值)
        Date date1 = new Date(1000*60*60*8); // 比如:加8小时
        System.out.println(date1); // Thu Jan 01 16:00:00 CST 1970
    }
}

获取当前日期距离1970-1-1 00:00:00 经过的毫秒数

//1.Date相关的Api
Date date = new Date();
long time = date.getTime();
System.out.println(time); // 1649338949710
//2.系统自带的Api
long millis = System.currentTimeMillis();
System.out.println(millis); // 1649338949710

格式化:将当前时间对象转为指定格式展示:Date -> String

Date date = new Date();//获取当前时间
//自定义格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
String format = sdf.format(date);
System.out.println(format); // 2022-04-07 22:01:55
System.out.println(sdf1.format(date)); // 2022年04月07日

解析:将当前的日期字符串转为Date对象:String -> Date

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

public class Test {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();//获取当前时间
        //自定义格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
        //sdf -> sdf,解析对应
        String format = sdf.format(date);
        Date parse = sdf.parse(format); // Fri Apr 08 15:39:18 CST 2022
        System.out.println(parse);
        //sdf1 -> sdf,解析不对应,报错!!!
//        Date parse1 = sdf1.parse(sdf.format(date)); 
//        System.out.println(parse1);
    }
}

--------------------------------------------------------------------------

上面Date 类想任意获取具体某一时间点很不易,而下面的Calendar 类正好解决这个问题!!!

java.util.Calendar 日历类,帮助Date类快速地设置和改变时间,完成时间的计算

  Calendar 类是一个抽象类,它为特定时刻与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。时刻可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000)的偏移量。 

转换:将Date对象的时间作为Calendar的时间:Date -> Calendar

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

public class Test {
    public static void main(String[] args) {
        //1.创建当前系统时间的Calendar对象
        //抽象类,不能直接new -> getInstance()该静态方法的返回值,就是该抽象类的子类对象GregorianCalendar
        Calendar calendar = Calendar.getInstance();
        //Date -> Calendar
        Date date = new Date();
        calendar.setTime(date);
        System.out.println(calendar);//java.util.GregorianCalendar[time=1649406453724,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=3,WEEK_OF_YEAR=15,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=98,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=27,SECOND=33,MILLISECOND=724,ZONE_OFFSET=28800000,DST_OFFSET=0]
    }
}

转换Calendar -> Date

//创建当前系统时间的Calendar对象
Calendar calendar = Calendar.getInstance();
// Calendar -> Date
Date date1 = calendar.getTime();
System.out.println(date1); //Fri Apr 08 16:30:06 CST 2022

Calendar 相关的Api

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

public class Test {
    public static void main(String[] args) {
        //创建当前系统时间的Calendar对象
        Calendar calendar = Calendar.getInstance();
        
        //1、set(int xxx, ...) 设置日历字段的值
        calendar.set(1999,01,26,15,20,30);
        Date date2 = calendar.getTime();
        System.out.println(date2); //Fri Feb 26 15:20:30 CST 1999
        
        //2、get(Calendar.XXX) 获取单个字段值
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);   //1999
        int month = calendar.get(Calendar.MONTH);
        System.out.println(month);  //1
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//26

        //3、add(Calendar.XXX , int amount) 时间偏移
        calendar.add(Calendar.YEAR,-2);//年份-2
        int year1 = calendar.get(Calendar.YEAR);
        System.out.println(year1); //1997
        calendar.add(Calendar.MONTH,2);//月份+2
        calendar.add(Calendar.DAY_OF_MONTH,-3);//
    }
}

 

posted @ 2022-04-07 22:19  鹿先森JIAN  阅读(28)  评论(0编辑  收藏  举报