介绍Java中常用的日期类型及对日期的相对操作。
Date类
Date类是一个较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完证的日期,构造方法:
public Date()
【得到系统当前时间】
import java.util.Date;
public class DateDemo01
{
public static void main(String[] args){
Date date=new Date();
System.out.println("当前日期为:"+date);
}
}
从程序的运行结果看,已经得到了系统当前的时间,但是并不是我们平时所见到的时间格式,而且现在的时间也不能精确到到毫秒,要想按照自己的格式显示时间就可以使用Calendar类完成操作。
Calendar类
Calendar类可以将取得的时间精确到毫秒,但是这个类本身就是一个抽象类,所以想要使用,必须实例化,Calendar的子类是GregorianCalendar类。在Calendar中提供了部分常量,
常量 | 类型 | 描述 |
---|---|---|
public static final YEAR | int | 取得年 |
public static final MONTH | int | 取得月 |
public static final DYA_OF_MONTH | int | 取得日 |
public static final HOUR_OF_DAY | int | 取得小时,24小时制 |
public static final MINUTE | int | 取得分 |
public static final SECOND | int | 取得秒 |
public static final MILLISECOND | int | 取得毫秒 |
除了上面提供的全局常量,Calendar还提供了一些常用方法
方法 | 类型 | 描述 |
---|---|---|
public static Calendar getInstance() | 普通 | 根据默认的时区实例化对象 |
public boolean after(Object when) | 普通 | 判读一个日期是否在指定日期之后 |
public boolean before(Object when) | 普通 | 判读一个日期是否在指定日期之前 |
public int get(int feld) | 普通 | 返回给定日历字段的值 |
下面通过以上方法取得一个系统的日期
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateDemo02
{
public static void main(String[] args){
Calendar calendar=null;
calendar=new GregorianCalendar();
System.out.println("年:"+calendar.get(Calendar.YEAR));
System.out.println("月:"+(calendar.get(Calendar.MONTH)+1));
System.out.println("日:"+calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("时:"+calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分:"+calendar.get(Calendar.MINUTE));
System.out.println("秒:"+calendar.get(Calendar.SECOND));
System.out.println("毫秒:"+calendar.get(Calendar.MILLISECOND));
}
}
DateFormat类
DateFromat是Format类的子类,专门用于格式化数据使用。从定义来看DateFromat类是一个抽象类,所以肯定无法直接实例化,但是在此抽象类中提供了一个静态方法,可以直接提供本类的实例,此类的常用方法:
方法 | 类型 | 描述 |
---|---|---|
public static final DateFromat getDateInstance() | 普通 | 得到默认的对象 |
public static final DateFromat getDateInstance(int type,Locale locale) | 普通 | 根据Locale的到对象 |
public static final DateFromat getDateInstance() | 普通 | 得到日期时间对象 |
public static final DateFromat getDateTimeInstance(int dateStyle,int timeStyle,Locale alocale) | 普通 | 根据Locale得到日期时间对象 |
【观察DateFromat中的操作】
import java.text.DateFormat;
import java.util.Date;
public class DateDemo03
{
public static void main(String[] args){
DateFormat df1=null;
DateFormat df2=null;
df1=DateFormat.getDateInstance();
df2=DateFormat.getDateTimeInstance();
System.out.println("DATE: "+df1.format(new Date()));
System.out.println("DATETIME: "+df2.format(new Date()));
}
}
【显示指定风格】
import java.util.Date;
import java.text.DateFormat;
import java.util.Locale;
public class DateDemo04
{
public static void main(String[] args){
DateFormat df1=null;
DateFormat df2=null;
df1=DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN"));
df2=DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN"));
System.out.println("DATE: "+df1.format(new Date()));
System.out.println("DATETIME: "+df2.format(new Date()));
}
}
SimpleDateFromat类
SimpleDateFormat是较为容易实现的日期转换类。
首先必须先定义出一个完成的日期转化模型,在模型中通过特定的日期标记可以将一个日期格式中的日期数字提取出来。
日期格式化模板如表:
标记 | 描述 |
---|---|
y | 年,年份是4位数字,所以用yyyy表示 |
M | 年中的月份,月份是两位数字,使用MM表示 |
d | 月中的天数,天数是两位数字,使用dd表示 |
H | 一天中的小时数(24小时),小数是两位数字,使用HH表示 |
m | 小时中的分钟数,分钟是两位数字,使用mm表示 |
s | 分钟中的秒数,秒数是两位数字,使用ss表示 |
S | 毫秒数,毫秒数是三位数字,使用SSS表示 |
【SimpleDateFromat类中常用的方法】
方法 | 类型 | 描述 |
---|---|---|
public SimpleDateFromat(String pattern) | 构造 | 通过一个指定的模块构造对象 |
public Date parse(String source) throws ParseException | 普通 | 将一个包含日期的字符串变为Date类型 |
public final String format(Date date) | 普通 | 将一个Date类型按照指定格式变为String类型 |
【格式化日期操作】
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateDemo05
{
public static void main(String[] args){
String strDate="2017-12-24 20:24:30.345";
String pat1="yyyy-MM-dd HH:mm:ss.SSS";
String pat2="yyyy年MM月dd日HH时mm分ss秒SSS毫秒";
SimpleDateFormat sdf1=new SimpleDateFormat(pat1);
SimpleDateFormat sdf2=new SimpleDateFormat(pat2);
Date d=null;
try
{
d=sdf1.parse(strDate);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println(sdf2.format(d));
}
}
以上程序中,首先使用pat1将字符串中表示的日期数字提取出来,然后使用pat2将这些日期数字重新转化为新的格式表示。
注意到时间的小伙伴们可能发现了时间是平安夜。祝小伙伴们圣诞快乐。