Java入门——日期操作类
Java入门——日期操作类
Date类
是一个较为简单的操作类,使用java.util.Data类的构造方法并进行输出就可以得到一个完整的日期。构造方法为: public Data();
java.util包需要导入
package Sep26; import java.util.Date; public class DataDemo01 { public static void main(String[] args) { Date date=new Date(); System.out.println("当前日期为:"+date); } }
当前日期为:Mon Sep 26 10:57:57 CST 2016
使用Calendar类可以得到格式丰富的日期
Calendar类
Calendar类是一个抽象类,可以依靠对象的多态性,通过子类对父类进行实例化操作,Calendar类的子类是GregorianCalendar类。
属性:
序号 | 常量 | 类型 | 描述 |
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 | int | 取得小时,24小时制 |
5 |
public static final int MINUTE |
int | 取得分 |
6 | public static final int SECOND | int | 取得秒 |
7 | public static final int MILLISEOND | int | 取得毫秒 |
方法:
序号 | 方法 | 类型 | 描述 |
1 | public static Calendar getInstance() | 普通 | 根据默认的时区实例化对象 |
2 | public beelean after(Obeject when) | 普通 | 判断一个日期是否在一个日期之前 |
3 | public beelean before(Obeject when) | 普通 | 判断一个日期是否在一个日期之后 |
4 | public int get(int field) | 普通 | 返回给定日历字段的值 |
package Sep26; 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);//月份是从0开始算的,所以要+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)); } }
年:2016 月:81 日:26 时:11 分:20 秒:3 毫秒:384
按照以上方法获得系统的时间会比较复杂,所以Java提供了其他方便的系统时间类,以显示符合习惯的系统时间
DateFormat类
Format类是用于格式化数据的一个类,DateFormat类是它的一个子类:DateFormat类也是一个抽象类,但是该抽象类中提供了一个静态方法,可以直接取得本类的实例。
package Sep26; import java.util.*; import java.text.*; public class DateDemo03 { 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("DATE:"+df2.format(new Date())); } }
DATE:2016年9月26日 DATE:2016年9月26日 上午11时37分59秒 CST
SimpleDateFormat类(最常用)
先定义出一个完整的日期转换模板,在模板中通过通过特定的日期标记:
序号 | 标记 | 描述 |
1 | yyyy | 年 |
2 | MM | 月 |
3 | dd | 日 |
4 | HH | 小时 |
5 | mm | 分钟 |
6 | ss | 秒 |
7 | SS | 毫秒 |
常用方法:
序号 | 方法 | 类型 | 描述 |
1 | public SimpleDateFormat(String pattern) | 构造 | 通过一个指定的模板构造对象 |
2 | public Date parse(String source)throws ParseException | 普通 | 将一个包含日期的字符串变为Date类型 |
3 | public final String format(Date date) | 普通 | 将一个日期类型按照指定格式转化为字符串类型 |
package Sep26; import java.util.*; import java.text.*; public class DateDemo05 { public static void main(String[] args) { String strData="2016-09-26 10:11:30.123";//定义日期时间的字符串 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(strData);//提取字符串中的日期 } catch (ParseException e) { e.printStackTrace(); } System.out.println(sdf2.format(d)); } }
2016年09月26日 10点11分30秒123毫秒
1:根据模板实例化对象构造函数)
2:parse()函数提取字符串中的日期,变为Date类型
3:format()函数格式化时间