import java.util.Date ; public class DateDemo01{ public static void main(String args[]){ Date date = new Date() ; // 直接实例化Date对象 System.out.println("当前日期为:" + date) ; } };
public abstract class Calendar
import java.util.* ; public class DateDemo02{ public static void main(String args[]){ Calendar calendar = new GregorianCalendar(); // 实例化Calendar类对象 System.out.println("YEAR: " + calendar.get(Calendar.YEAR)); System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE)); System.out.println("SECOND: " + calendar.get(Calendar.SECOND)); System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND)); } };
import java.text.DateFormat ; import java.util.Date ; public class DateDemo03{ public static void main(String args[]){ DateFormat df1 = null ; // 声明一个DateFormat DateFormat df2 = null ; // 声明一个DateFormat df1 = DateFormat.getDateInstance() ; // 得到日期的DateFormat对象 df2 = DateFormat.getDateTimeInstance() ; // 得到日期时间的DateFormat对象 System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化 System.out.println("DATETIME:" + df2.format(new Date())) ; // 按照日期时间格式化 } };
Object clone() 重写 Cloneable boolean equals(Object obj) 重写 equals String format(Date date) 将一个 Date 格式化为日期/时间字符串。 abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) 将一个 Date 格式化为日期/时间字符串。 StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) 重写 Format。 static Locale[] getAvailableLocales() 返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回已本地化的实例。 Calendar getCalendar() 获取与此日期/时间格式器关联的日历。 static DateFormat getDateInstance() 获取日期格式器,该格式器具有默认语言环境的默认格式化风格。 static DateFormat getDateInstance(int style) 获取日期格式器,该格式器具有默认语言环境的给定格式化风格。 static DateFormat getDateInstance(int style, Locale aLocale) 获取日期格式器,该格式器具有给定语言环境的给定格式化风格。 static DateFormat getDateTimeInstance() 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。 static DateFormat getDateTimeInstance(int dateStyle, int timeStyle) 获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。 static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) 获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。等等。
import java.text.DateFormat ; import java.util.Date ; import java.util.Locale ; public class DateDemo04{ public static void main(String args[]){ DateFormat df1 = null ; // 声明一个DateFormat DateFormat df2 = null ; // 声明一个DateFormat df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN")) ; // 得到日期的DateFormat对象 df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN")) ; // 得到日期时间的DateFormat对象 System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化 System.out.println("DATETIME:" + df2.format(new Date())) ; // 按照日期时间格式化 } };
java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
所有已实现的接口:
Serializable,Cloneable
public class SimpleDateFormat
extends DateFormat
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat 中的getTimeInstance、getDateInstance 或getDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用applyPattern 方法来修改格式模式。有关使用这些方法的更多信息,请参阅DateFormat。
......
此类的功能是完成日期的格式化显示的,例如,在开发中,可能会将一种日期格式变为另外一种日期格式,如下所示:
原始日期:2008-10-19 10:11:30.345
转换后的日期:2208年 10月 19日 10时 11分 30秒 345毫秒
但是以上的两个日期中日期的数字是完全一样的,唯一不同的是日期的显示格式不同,所以要想实现这样的转换功能就必须依靠SimpleDateFormat类。
如果想实现转换,则必须首先准备好一个模板,通过此模板进行日期数字的提取工作。
NO 标记 描述
1 y 表示年,年份是四位数字,所以需要使用“yyyy”表示年。
2 M 表示月,月份是两位数字,所以需要使用“MM”表示月。
3 d 表示日,日是两位数字,所以需要使用“dd”表示日。
4 H或h 表示时,两位数字,如果用“HH”表示24小时制,如果“hh”表示12小时制。
5 m 表示分,两位数字 “mm”。
6 s 表示秒,两位数字“ss”。
7 S 表示毫秒,三位数字“SSS”。
在SimpleDateFormat类使用的时候,必须注意的是在构造对象时传入匹配的模板。
构造方法:public SimpleDateFormat(String pattern)
转换:public Date parse(String source) throws ParseException 此时取得是全部的时间数。
格式化:public final String format(Date date) 将时间重新格式化成字符串显示。
代码示例如下:
import java.text.* ; import java.util.* ; public class DateDemo05{ public static void main(String args[]){ String strDate = "2008-10-19 10:11: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)) ; // 将日期变为新的格式 } };
import java.util.* ; // 导入需要的工具包 class DateTime{ // 以后直接通过此类就可以取得日期时间 private Calendar calendar = null ; // 声明一个Calendar对象,取得时间 public DateTime(){ // 构造方法中直接实例化对象 this.calendar = new GregorianCalendar() ; } 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)).append("-") ; // 增加月 buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)).append(" ") ; // 取得日 buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append(":") ; // 取得时 buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)).append(":") ; buf.append(this.addZero(calendar.get(Calendar.SECOND),2)).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)).append("月") ; // 增加月 buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)).append("日") ; // 取得日 buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append("时") ; // 取得时 buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)).append("分") ; // 取得分 buf.append(this.addZero(calendar.get(Calendar.SECOND),2)).append("秒") ; // 取得秒 buf.append(this.addZero(calendar.get(Calendar.MILLISECOND),3)).append("毫秒") ; // 取得毫秒 return buf.toString() ; } public String getTimeStamp(){ // 得到的是一个时间戳 // 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能 StringBuffer buf = new StringBuffer() ; buf.append(calendar.get(Calendar.YEAR)) ; // 增加年 buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)) ; // 增加月 buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)) ; // 取得日 buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)) ; // 取得时 buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)) ; // 取得分 buf.append(this.addZero(calendar.get(Calendar.SECOND),2)); // 取得秒 buf.append(this.addZero(calendar.get(Calendar.MILLISECOND),3)) ; // 取得毫秒 return buf.toString() ; } // 考虑到日期中存在前导0,所以在此处加上补零的方法 private String addZero(int num,int len){ StringBuffer s = new StringBuffer() ; s.append(num) ; while(s.length()<len){ // 如果长度不足,则继续补0 s.insert(0,"0") ; // 在第一个位置处补0 } return s.toString() ; } }; public class DateDemo06{ public static void main(String args[]){ DateTime dt = new DateTime() ; System.out.println("系统日期:"+dt.getDate()) ; System.out.println("中文日期:"+dt.getDateComplete()) ; System.out.println("时间戳:"+dt.getTimeStamp()) ; } };
import java.util.* ; // 导入需要的工具包 import java.text.* ; // 导入SimpleDateFormat所在的包 class DateTime{ // 以后直接通过此类就可以取得日期时间 private SimpleDateFormat sdf = null ; // 声明SimpleDateFormat对象 public String getDate(){ // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ; return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作 } public String getDateComplete(){ // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒 this.sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒") ; return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作 } public String getTimeStamp(){ // 得到的是一个时间戳 this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ; return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作 } }; public class DateDemo07{ public static void main(String args[]){ DateTime dt = new DateTime() ; System.out.println("系统日期:"+dt.getDate()) ; System.out.println("中文日期:"+dt.getDateComplete()) ; System.out.println("时间戳:"+dt.getTimeStamp()) ; } };