Java学习总结:36(日期处理类)

日期处理类

Date类

Date类常用方法

No.方法类型描述
1public Date()构造实例化Date类对象
2public Date(long date)构造将数字变为Date类对象,long为日期时间数据
3public long getTime()普通将当前的日期时间变为long型

例:取得当前的日期时间

package Project.Study.DateClass;

import java.util.Date;

public class Test1 {
    public static void main(String[]args){
        Date date=new Date();		//实例化Date对象
        System.out.println(date);	//输出对象信息
    }
}
//结果:
//Wed Apr 01 20:09:49 CST 2020

大家可能都注意到了,上程序输出的日期未格式化处理,看着十分变扭,日期的格式化需要用到SimpleDateFormat类,这个类我们等下会讲到。

例:Date与long间的转换

package Project.Study.DateClass;

import java.util.Date;

public class Test2 {
    public static void main(String[]args){
        long cur=System.currentTimeMillis();	//取得当前日期时间以long型返回
        Date date=new Date(cur);				//将long型转化为Date
        System.out.println(date);				//输出对象信息
        System.out.println(date.getTime());
    }
}
//结果:
//Wed Apr 01 20:16:22 CST 2020
//1585743382666

日期格式化:SimpleDateFormat

No.方法类型描述
1public SimpleDateFormat(String pattern)构造传入日期时间标记实例化对象
2public final String format(Date date)普通将日期格式化为字符串数据
3public Date parse(String source) throws ParseException普通将字符串格式化为日期数据

例:将日期格式化显示(Date型数据变为String型数据)

package Project.Study.SimpleDateFormatClass;

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

public class Test1 {
    public static void main(String[]args){
        Date date=new Date();           //实例化Date类对象
        //实例化SimpleDateFormat类对象,同时定义好要转换的目标字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str=sdf.format(date);    //将Date型变为String型
        System.out.println(str);
    }
}
//结果:
//2020-04-01 23:57:56.166

注:yyyy-MM-dd HH:mm:ss.SSS分别对应(年-月-日 时:分:秒.毫秒),这些都是常用的时间标记。

例:将字符串转换为日期

package Project.Study.SimpleDateFormatClass;

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

public class Test2 {
    public static void main(String[]args) throws ParseException {
        String str="2020-04-01 23:57:56.166";			//日期字符串
        //实例化SimpleDateFormat类对象,同时定义好了要转换的字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date=sdf.parse(str);						//将字符串变为日期型数据
        System.out.println(date);
    }
}
//结果:
//Wed Apr 01 23:57:56 CST 2020

SimpleDateFormat类其实有一个好处就是,它可以自动处理错误的日期时间数,例如:如果设置的月数是15,则自动增加一年,变为3个月。

例:观察SimpleDateFormat的自动纠正

package Project.Study.SimpleDateFormatClass;

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

public class Test3 {
    public static void main(String[]args) throws ParseException {
        String str="2020-15-65 23:57:56.166";	//定义一个错误的日期字符串
        //实例化SimpleDateFormat类对象,同时定义好了要转换的字符串格式
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date=sdf.parse(str);				//将字符串变为日期型数据
        System.out.println(date);
    }
}
//结果:
//Tue May 04 23:57:56 CST 2021

从上程序可以看到,虽然我们定义了一个错误的日期字符串,但SimpleDateFormat类自动进行了进位处理。

Calendar类

Calendar类中定义的常量和方法

No.方法类型描述
1public static final int YEAR常量取得年、int类型
2public static final int MONTH常量取得月、int类型
3public static final int DAY_OF_MONTH常量取得日、int类型
4public static final int HOUR_OF_DAY常量取得小时(24小时制)、int类型
5public static final int MINUTE常量取得分、int类型
6public static final int SECOND常量取得秒、int类型
7public static final int MILLISECOND常量取得毫秒、int类型
8public static Calendar getInstance()普通根据默认的时区实例化对象
9public boolean after(Object when)普通判断一个日期是否在指定日期之后
10public boolean before(Object when)普通判断一个日期是否在指定日期之前
11public int get(int field)普通返回给定日历字段的值

例:取得当前的日期时间

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test1 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();	//取得本类对象
        StringBuffer buf=new StringBuffer();	//保存日期数据
        buf.append(cal.get(Calendar.YEAR)).append("-");			//取得年数据
        buf.append(cal.get(Calendar.MONTH)+1).append("-");		//取得月数据,从0开始
        buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");	//取得天数据
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");	//取得小时数据
        buf.append(cal.get(Calendar.MINUTE)).append(":");		//取得分钟数据
        buf.append(cal.get(Calendar.SECOND));					//取得秒数据
        System.out.println(buf);
    }
}
//结果:
//2020-4-2 1:11:34

由上程序我们可以发现,Calendar类取得的内容不会前导0,即如果当前月份是4月,那么返回的不是“04”,而是“4”。

注意:由于Calendar类的月是从0开始的,所以每一次在进行月份计算的时候都需要执行一个“+1”操作。

Calendar类还可以进行简单的日期计算
例:取得五天后的日期

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test2 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();
        StringBuffer buf=new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH)+1).append("-");
        buf.append(cal.get(Calendar.DAY_OF_MONTH)+5).append(" ");
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}
//结果:
//2020-4-7 1:21:56

注意:Calendar类并没有SimpleDateFormat类的自动进位功能。
例:错误示范

package Project.Study.CalendarClass;

import java.util.Calendar;

public class Test2 {
    public static void main(String[]args){
        Calendar cal=Calendar.getInstance();
        StringBuffer buf=new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH)+1).append("-");
        buf.append(cal.get(Calendar.DAY_OF_MONTH)+33).append(" ");
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}
//结果:
//2020-4-35 1:30:11(一个月不会有35天的...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值