java日期类的操作

时间:2021-09-12 18:09:12

1.Date类及其常用API

Date类简介

java.util.Date 类封装日期及时间信息。
Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

获取当前系统时间

Date date = new Date();//系统的当前时间信息
System.out.println(date);

setTime和getTime方法

Date date = new Date();
long time = date.getTime();//1970/01/01至今的毫秒数

//增加一天
long t = 60 * 60 * 24 * 1000;
date.setTime(t);

2. SimpleDateFormat类

SimpleDateFormat类简介

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换。

日期模式的匹配字符串:
java日期类的操作

相关的API

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//按照yyyy-MM-dd HH:mm:ss格式转换为字符串
Date date = new Date();//当前系统时间
String str = sdf.format(date);

//将String解析为Date
String time = "2014-12-02 11:12:41";
Date d = sdf.parse(time);//需要处理异常

3. Calendar类

java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。
Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()。该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现。

set()方法
该方法可以通过对不同的时间分量分别设置不同的值。Calendar对不同的时间分量提供了相应的常量,我们在使用set方法设置时,第一个参数就应当使用对应的常量作为时间分量。

Calendar c = Clalendar.getInstance();//表示当前时间
//设置时间
c.set(c.YEAR, 2015);//设置年为2015
c.set(c.MONTH, 4);//月份为5月(月份从0开始,0代表1月)
c.set(c.DAY_OF_MONTH, 21);//设置日为21
Date date = c.getTime();//获取时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(date);
System.out.println(time);// 2015-5-21

get()方法
该方法可以通过对不同的时间分量获取相应的值。Calendar对不同的时间分量提供了相应的常量,我们在使用get方法获取时,参数就应当使用对应的常量作为时间分量。

Calendar c = Calendar.getInstance();

        int year = c.get(Calendar.YEAR);//年

        int month = c.get(Calendar.MONTH)+1;//月

        int day = c.get(Calendar.DAY_OF_MONTH);//日

        int date = c.get(Calendar.DAY_OF_WEEK);//星期

        int hour = c.get(Calendar.HOUR_OF_DAY);//时

        int minute = c.get(Calendar.MINUTE);//分

        int second = c.get(Calendar.SECOND);//秒

        System.out.println(year+"年"+month+"月"+day+"日"+date+" "+hour+":"+minute+":"+second );

        //得到星期
        String[] str = {"日","一","二","三","四","五","六"};

        int date1 = c.get(Calendar.DAY_OF_WEEK)-1;
        System.out.println("周"+str[date1]);

        //得到一年当中的第几天
        int date2 = c.get(Calendar.DAY_OF_YEAR);
        System.out.println("今年的第"+date2+"天");

        //获取年,月,日的最大值
        int date3 = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(date3);

add()方法

Calendar还允许我们使用统一的方式来对某个时间分量的值进行计算。我们需要使用方法 void add(int field,int amount)。该方法可以为某个时间分量的值加上给定的值,若想减去给定的值,那么传入的值需要是负数即可。并且计算后会自动进行相应的进位,例如若当前为月底,那么加一天后,为下个月的月初,而月就会进位。
对时间的加减设置
Calendar c = Calendar.getInstance();

//查看3年后四个月零100天是哪天?
c.add(Calendar.YEAR, 3);
c.add(Calendar.MONTH, 4);
c.add(Calendar.DAY_OF_YEAR, 100);