主要使用java.util包中的Date、Calendar以及java.text包中的SimpleDateFormat.
Date类
//=================================================// File Name : Date_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Date;//主类//Function : Date_demopublic class Date_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Date date = new Date(); //实例化Date类对象 System.out.println("当前日期为:"+date); //输出日期 }}
Calendar类
//=================================================// File Name : Date_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Calendar;import java.util.GregorianCalendar;//主类//Function : Date_demopublic class Calendar_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Calendar calendar = null; //声明一个Calendar对象 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)); }}
输出
年:2017月:5日:17时:20分:56秒:8毫秒:427
DateFormat类
对java.util.Date进行格式化操作,为了符合中国人的习惯
DateFormat类和MessageFormat类都属于Format类的子类,专门用于格式化数据使用
DateFormat类是一个抽象类,无法直接实例化,但是在此抽象类中提供了一个静态方法,可以直接取得本类的实例。
//=================================================// File Name : DateFormat_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Date;import java.text.DateFormat;//主类//Function : DateFormat_demopublic class DateFormat_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 DateFormat df1 = null; //声明DateFormat类对象 DateFormat df2 = null; //声明DateFormat类对象 df1 = DateFormat.getDateInstance(); //取得日期 df2 = DateFormat.getDateTimeInstance(); //取得日期时间 System.out.println("DATE:"+df1.format(new Date())); //格式化日期 System.out.println("DATETIME:"+df2.format(new Date())); }}
指定显示的风格
//=================================================// File Name : DateFormat_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Date;import java.util.Locale;import java.text.DateFormat;//主类//Function : DateFormat_demopublic class DateFormat_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 DateFormat df1 = null; //声明DateFormat类对象 DateFormat df2 = null; //声明DateFormat类对象 //取得日期时间,设置日期的显示格式、时间的显示格式 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())); }}
输出
DATE:2017年5月17日DATETIME:2017年5月17日 下午09时38分22秒 CST
格式化日期操作
首先使用第1个模板将字符串中表示的日期数字取出,然后再使用第2个模板将这些日期数字重新转化为新的格式表示。
//=================================================// File Name : DateFormat_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Date;import java.text.ParseException;import java.text.SimpleDateFormat;//主类//Function : DateFormat_demopublic class DateFormat_demo { public static void main(String[] args) { // TODO 自动生成的方法存根// DateFormat df1 = null; //声明DateFormat类对象// DateFormat df2 = null; //声明DateFormat类对象 df1 = DateFormat.getDateInstance(); //取得日期 df2 = DateFormat.getDateTimeInstance(); //取得日期时间// // //取得日期时间,设置日期的显示格式、时间的显示格式// 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())); String strDate = "2016-3-11 10:20:30.123"; //定义日期时间的字符串 String pat1 = "yyyy-MM-dd HH:mm:ss.SSS"; //准备第1个模板,从字符串中提取数字 String pat2 = "yyyy年MM月dd日HH时mm分ss秒SSS毫秒"; //准备第1个模板,从字符串中提取数字 SimpleDateFormat sdf1 = new SimpleDateFormat(pat1); //实例化模板对象 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2); //实例化模板对象 Date d = null; try{ d = sdf1.parse(strDate); //将给定字符串中的日期提取出来 }catch(ParseException e){ //如果提供的字符串格式有错误,则进行异常处理 e.printStackTrace(); } System.out.println(sdf2.format(d)); //将日期变成新的格式 }}
输出
2016年03月11日10时20分30秒123毫秒
SimpleDateFormat的parse方法
public static void main(String[] args) throws ParseException { // TODO 自动生成的方法存根 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateString = "2017-08-01"; Date date = sdf.parse(dateString); System.out.println(date); }
输出
Tue Aug 01 00:00:00 CST 2017
实现:基于Calendar类
//=================================================// File Name : CalendarClass_demo//------------------------------------------------------------------------------// Author : Commonimport java.sql.Date;import java.util.Calendar;import java.util.GregorianCalendar;//类名:DateTime//属性://方法:class DateTime { private Calendar calendar = null; //定义一个Calendar对象,可以取得时间 public DateTime() { super(); this.calendar = new GregorianCalendar(); //通过Calendar类的子类实例化 } public String getDate(){ //得到完整的日期,格式为:yyyy-MM-dd HH:mm:ss.SSS //考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能 StringBuffer buf = new StringBuffer(); //依次取得时间 buf.append(calendar.get(Calendar.YEAR)).append("-"); buf.append(this.addZero(calendar.get(Calendar.MONTH)+1, 2)); buf.append("-"); buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH), 2)); buf.append(" "); buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)); buf.append(":"); buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)); buf.append(":"); buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)); buf.append("."); buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)); return buf.toString(); } public String getDateComplete(){ //得到完整的日期,格式为:yyyy年MM月dd日HH时mm分ss秒SSS毫秒 //考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能 StringBuffer buf = new StringBuffer(); //依次取得时间 buf.append(calendar.get(Calendar.YEAR)).append("年"); buf.append(this.addZero(calendar.get(Calendar.MONTH)+1, 2)); buf.append("月"); buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH), 2)); buf.append("日"); buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)); buf.append("时"); buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)); buf.append("分"); buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)); buf.append("秒"); buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)); buf.append("毫秒"); return buf.toString(); } //考虑到日期中有前导0,所以在此处加上了补零的方法 private String addZero(int num,int len){ StringBuffer s = new StringBuffer(); s.append(num); while(s.length()
输出
系统时间:2017-05-17 20:41:06.508中文时间:2017年05月17日20时41分06秒508毫秒系统时间:20170517204106508
实现:基于SimpleDateFormat类
//=================================================// File Name : SimpleDateFormat_demo//------------------------------------------------------------------------------// Author : Commonimport java.util.Date;import java.text.SimpleDateFormat;//类名:DateTime//属性://方法:class DateTime_1 { private SimpleDateFormat sdf = null; //声明日期格式化操作对象,直接对new Date()进行实例化 //得到日期,格式为:yyyy-MM-dd HH:mm:ss.SSS public String getDate(){ this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); return this.sdf.format(new Date()); } //得到完整的日期,格式为:yyyy年MM月dd日HH时mm分ss秒SSS毫秒 public String getDateComplete(){ this.sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒"); return this.sdf.format(new Date()); } //得到时间戳,格式为:yyyyMMddHHmmssSSS public String getDateStamp(){ this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); return this.sdf.format(new Date()); }}//主类//Function : SimpleDateFormat_demopublic class SimpleDateFormat_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 DateTime dt = new DateTime(); //实例化DateTime对象 System.out.println("系统时间:"+dt.getDate()); System.out.println("中文时间:"+dt.getDateComplete()); System.out.println("系统时间:"+dt.getTimeStamp()); }}
输出
系统时间:2017-05-17 20:59:26.224中文时间:2017年05月17日20时59分26秒224毫秒系统时间:20170517205926224