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

日期处理类

Date类

Date类常用方法

No. 方法 类型 描述
1 public Date() 构造 实例化Date类对象
2 public Date(long date) 构造 将数字变为Date类对象,long为日期时间数据
3 public 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. 方法 类型 描述
1 public SimpleDateFormat(String pattern) 构造 传入日期时间标记实例化对象
2 public final String format(Date date) 普通 将日期格式化为字符串数据
3 public 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. 方法 类型 描述
1 public static final int YEAR 常量 取得年、int类型
2 public static final int MONTH 常量 取得月、int类型
3 public static final int DAY_OF_MONTH 常量 取得日、int类型
4 public static final int HOUR_OF_DAY 常量 取得小时(24小时制)、int类型
5 public static final int MINUTE 常量 取得分、int类型
6 public static final int SECOND 常量 取得秒、int类型
7 public static final int MILLISECOND 常量 取得毫秒、int类型
8 public static Calendar getInstance() 普通 根据默认的时区实例化对象
9 public boolean after(Object when) 普通 判断一个日期是否在指定日期之后
10 public boolean before(Object when) 普通 判断一个日期是否在指定日期之前
11 public 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天的...)

你可能感兴趣的:(JAVA)