javaSE-常用类-Date

public static void main(String[] args) {

		/*
		 * Date:
		 */
		// 创建一个日期对象。
		Date date = new Date();

		System.out.println(date);// Mon Mar 25 11:11:19 CST 2013

		long time = System.currentTimeMillis();
		System.out.println(time);// 1364181181171

		/*
		 * 日期对象和毫秒值之间的转换。 毫秒值转成-->日期对象。 1,new Date(long);构造函数形式。
		 * 2,setTime(long): 获取日期对象,可以通过对象的方法对该日期进行指定字段的操作。
		 */
		date.setTime(1364181181171l);

		System.out.println(date);

		/*
		 * 日期对象转成毫秒值。 通常用于进行运算。 通过Date对象的getTime方法。
		 */
		System.out.println(date.getTime());
	}

public class DateFormatDemo {

	public static void main(String[] args) throws ParseException {

		
		Date date = new Date();
		/*
		 * 想要对日期对象的字符串表现形式进行指定格式的显示。
		 * 找到了DateFormat类。
		 * 格式化:日期-->文本  ,日期对象--->字符串。 String format(date)
		 * 解析:文本-->日期,日期格式的字符串-->日期对象。Date parse(String);
		 */
		
		//DateFormat虽然是抽象类,但是该类有提供静态工厂方法(用于获取日期格式实例的方法)。
		DateFormat dateFormat = DateFormat.getDateInstance();//2013-3-25
//		System.out.println(dateFormat);//java.text.SimpleDateFormat@ef7951d7
		
		dateFormat = DateFormat.getDateInstance(DateFormat.FULL);//指定Full格式。2013年3月25日 星期一
		System.out.println(dateFormat.format(date)+"full");	
		dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//指定Long格式。2013年3月25日
		System.out.println(dateFormat.format(date)+"LONG");
		dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);//指定MEDIUM格式。2013-3-25 默认格式。
		System.out.println(dateFormat.format(date)+"Medium");
		dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);//指定SHORT格式。13-3-25
		System.out.println(dateFormat.format(date)+"Short");
		
		dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
		//2013年3月25日 星期一 上午11时42分14秒 CST
		System.out.println(dateFormat.format(date)+"dataTime");
		
		System.err.println("------------------------------------------------------");
		
		//如何通过自定义的格式进行格式化?需要自己创建SimpleDateFormat对象。
		//通过其构造函数将自定义的模式进行对象封装。
		
		dateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");//2013/03/25 11:49:33
		
		
		
		//通过format方法对日期对象进行格式化。
		System.out.println(dateFormat.format(date));
		
		
		
		
		
		//对日期格式字符串进行解析。
		String str_Date2 = "2011年8月5日";
		DateFormat dateFormat2 =DateFormat.getDateInstance(DateFormat.LONG);
		Date date2 = dateFormat2.parse(str_Date2);
		
		System.out.println(date2);
	}


}




java.text
类 DateFormat

java.lang.Object
  继承者 java.text.Format
      继承者 java.text.DateFormat
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
SimpleDateFormat

public abstract class DateFormat
   
   
    
    extends 
    
    Format
   
   

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。

DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。

要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:

  myString = DateFormat.getDateInstance().format(myDate);
 

如果格式化多个日期,那么获取该格式并多次使用它是更为高效的做法,这样系统就不必多次获取有关环境语言和国家/地区约定的信息了。

  DateFormat df = DateFormat.getDateInstance();
  for (int i = 0; i < myDate.length; ++i) {
    output.println(df.format(myDate[i]) + "; ");
  }
 

要格式化不同语言环境的日期,可在 getDateInstance() 的调用中指定它。

  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
 

还可使用 DateFormat 进行解析。

  myDate = df.parse(myString);
 

使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:

  • SHORT 完全为数字,如 12.13.52 或 3:30pm
  • MEDIUM 较长,如 Jan 12, 1952
  • LONG 更长,如 January 12, 1952 或 3:30:32pm
  • FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST。

如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。

还可以使用借助 ParsePosition 和 FieldPosition 的解析和格式化方法形式来

  • 逐步地解析字符串的各部分。
  • 对齐任意特定的字段,或者找出字符串在屏幕上的选择位置。
同步

日期格式不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须保持外部同步。

另请参见:
Format, NumberFormat, SimpleDateFormat, Calendar, GregorianCalendar, TimeZone, 序列化表格

嵌套类摘要
static classDateFormat.Field
          定义了各种常量,这些常量用作 DateFormat.formatToCharacterIterator 所返回的 AttributedCharacterIterator 中的属性键和 FieldPosition 中的字段标识符。
 
字段摘要
static intAM_PM_FIELD
          用于对齐 AM_PM 字段的有用常量。
protected  Calendarcalendar
          DateFormat 使用 calendar 来生成实现日期和时间格式化所需的时间字段值。
static intDATE_FIELD
          用于对齐 DATE 字段的有用常量。
static intDAY_OF_WEEK_FIELD
          用于对齐 DAY_OF_WEEK 字段的有用常量。
static intDAY_OF_WEEK_IN_MONTH_FIELD
          用于对齐 DAY_OF_WEEK_IN_MONTH 字段的有用常量。
static intDAY_OF_YEAR_FIELD
          用于对齐 DAY_OF_YEAR 字段的有用常量。
static intDEFAULT
          用于默认模式的常量。
static intERA_FIELD
          用于对齐 ERA 字段的有用常量。
static intFULL
          用于 FULL 模式的常量。
static intHOUR_OF_DAY0_FIELD
          用于对齐从 0 开始的 HOUR_OF_DAY 字段的有用常量。
static intHOUR_OF_DAY1_FIELD
          用于对齐从 1 开始的 HOUR_OF_DAY 字段的有用常量。
static intHOUR0_FIELD
          用于对齐从 0 开始的 HOUR 字段的有用常量。
static intHOUR1_FIELD
          用于对齐从 1 开始的 HOUR 字段的有用常量。
static intLONG
          用于 LONG 模式的常量。
static intMEDIUM
          用于 MEDIUM 模式的常量。
static intMILLISECOND_FIELD
          用于对齐 MILLISECOND 字段的有用常量。
static intMINUTE_FIELD
          用于对齐 MINUTE 字段的有用常量。
static intMONTH_FIELD
          用于对齐 MONTH 字段的有用常量。
protected  NumberFormatnumberFormat
          数字格式器,DateFormat 用其来格式化日期和时间中的数字。
static intSECOND_FIELD
          用于对齐 SECOND 字段的有用常量。
static intSHORT
          用于 SHORT 模式的常量。
static intTIMEZONE_FIELD
          用于对齐 TIMEZONE 字段的有用常量。
static intWEEK_OF_MONTH_FIELD
          用于对齐 WEEK_OF_MONTH 字段的有用常量。
static intWEEK_OF_YEAR_FIELD
          用于对齐 WEEK_OF_YEAR 字段的有用常量。
static intYEAR_FIELD
          用于对齐 YEAR 字段的有用常量。
 
构造方法摘要
protected DateFormat()
          创建一个新的 DateFormat。
 
方法摘要
 Objectclone()
          重写 Cloneable
 booleanequals(Object obj)
          重写 equals
 Stringformat(Date date)
          将一个 Date 格式化为日期/时间字符串。
abstract  StringBufferformat(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
          将一个 Date 格式化为日期/时间字符串。
 StringBufferformat(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
          重写 Format。
static Locale[]getAvailableLocales()
          返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回已本地化的实例。
 CalendargetCalendar()
          获取与此日期/时间格式器关联的日历。
static DateFormatgetDateInstance()
          获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormatgetDateInstance(int style)
          获取日期格式器,该格式器具有默认语言环境的给定格式化风格。
static DateFormatgetDateInstance(int style, Locale aLocale)
          获取日期格式器,该格式器具有给定语言环境的给定格式化风格。
static DateFormatgetDateTimeInstance()
          获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormatgetDateTimeInstance(int dateStyle, int timeStyle)
          获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。
static DateFormatgetDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
          获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。
static DateFormatgetInstance()
          获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。
 NumberFormatgetNumberFormat()
          获取此日期/时间格式器用于格式化和解析时间的数字格式器。
static DateFormatgetTimeInstance()
          获取时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormatgetTimeInstance(int style)
          获取时间格式器,该格式器具有默认语言环境的给定格式化风格。
static DateFormatgetTimeInstance(int style, Locale aLocale)
          获取时间格式器,该格式器具有给定语言环境的给定格式化风格。
 TimeZonegetTimeZone()
          获取时区。
 inthashCode()
          重写 hashCode
 booleanisLenient()
          判断日期/时间解析是否为不严格的。
 Dateparse(String source)
          从给定字符串的开始解析文本,以生成一个日期。
abstract  Dateparse(String source, ParsePosition pos)
          根据给定的解析位置开始解析日期/时间字符串。
 ObjectparseObject(String source, ParsePosition pos)
          解析字符串中的文本,以生成一个 Date
 voidsetCalendar(Calendar newCalendar)
          设置此日期格式所使用的日历。
 voidsetLenient(boolean lenient)
          指定日期/时间解析是否不严格。
 voidsetNumberFormat(NumberFormat newNumberFormat)
          允许用户设置数字格式器。
 voidsetTimeZone(TimeZone zone)
          为此 DateFormat 对象的日历设置时区。

java.text
类 SimpleDateFormat

java.lang.Object
  继承者 java.text.Format
      继承者 java.text.DateFormat
          继承者 java.text.SimpleDateFormat
所有已实现的接口:
Serializable, Cloneable

public class SimpleDateFormat
   
   
    
    extends 
    
    DateFormat
   
   

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstancegetDateInstancegetDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern 方法来修改格式模式。有关使用这些方法的更多信息,请参阅 DateFormat

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A''Z''a''z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 'A''Z''a' 'z' 都被保留):

字母日期或时间元素表示示例
GEra 标志符TextAD
yYear1996; 96
M年中的月份MonthJuly; Jul; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800
模式字母通常是重复的,其数量确定其精确表示:
  • Text: 对于格式化来说,如果模式字母的数量大于等于 4,则使用完全形式;否则,在可用的情况下使用短形式或缩写形式。对于解析来说,两种形式都是可接受的,与模式字母的数量无关。
  • Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。对于解析来说,模式字母的数量被忽略,除非必须分开两个相邻字段。
  • Year: 如果格式器的 Calendar 是格里高利历,则应用以下规则。
    • 对于格式化来说,如果模式字母的数量为 2,则年份截取为 2 位数,否则将年份解释为 number
    • 对于解析来说,如果模式字母的数量大于 2,则年份照字面意义进行解释,而不管数位是多少。因此使用模式 "MM/dd/yyyy",将 "01/11/12" 解析为公元 12 年 1 月 11 日。
    • 在解析缩写年份模式("y" 或 "yy")时,SimpleDateFormat 必须相对于某个世纪来解释缩写的年份。这通过将日期调整为 SimpleDateFormat 实例创建之前的 80 年和之后 20 年范围内来完成。例如,在 "MM/dd/yy" 模式下,如果 SimpleDateFormat 实例是在 1997 年 1 月 1 日创建的,则字符串 "01/11/12" 将被解释为 2012 年 1 月 11 日,而字符串 "05/04/64" 将被解释为 1964 年 5 月 4 日。在解析时,只有恰好由两位数字组成的字符串(如 Character.isDigit(char) 所定义的)被解析为默认的世纪。其他任何数字字符串将照字面意义进行解释,例如单数字字符串,3 个或更多数字组成的字符串,或者不都是数字的两位数字字符串(例如"-1")。因此,在相同的模式下, "01/02/3" 或 "01/02/003" 解释为公元 3 年 1 月 2 日。同样,"01/02/-3" 解析为公元前 4 年 1 月 2 日。
    否则,则应用日历系统特定的形式。对于格式化和解析,如果模式字母的数量为 4 或大于 4,则使用日历特定的 long form。否则,则使用日历特定的 short or abbreviated form
  • Month: 如果模式字母的数量为 3 或大于 3,则将月份解释为 text;否则解释为 number
  • General time zone: 如果时区有名称,则将它们解释为 text。对于表示 GMT 偏移值的时区,使用以下语法:
         GMTOffsetTimeZone:
                 GMT Sign Hours : Minutes
         Sign: one of
                 + -
         Hours:
                 Digit
                 Digit Digit
         Minutes:
                 Digit Digit
         Digit: one of
                 0 1 2 3 4 5 6 7 8 9
    Hours 必须在 0 到 23 之间,Minutes 必须在 00 到 59 之间。格式是与语言环境无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。

    对于解析来说,RFC 822 time zones 也是可接受的。

  • RFC 822 time zone: 对于格式化来说,使用 RFC 822 4-digit 时区格式:
         RFC822TimeZone:
                 Sign TwoDigitHours Minutes
         TwoDigitHours:
                 Digit Digit
    TwoDigitHours 必须在 00 和 23 之间。其他定义请参阅 general time zones

    对于解析来说,general time zones 也是可接受的。

SimpleDateFormat 还支持 本地化日期和时间模式 字符串。在这些字符串中,以上所述的模式字母可以用其他与语言环境有关的模式字母来替换。 SimpleDateFormat 不处理除模式字母之外的文本本地化;而由类的客户端来处理。

示例
以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56。
日期和时间模式结果
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
同步

日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

另请参见:
Java Tutorial, Calendar, TimeZone, DateFormat, DateFormatSymbols, 序列化表格

嵌套类摘要
 
从类 java.text.DateFormat 继承的嵌套类/接口
DateFormat.Field
 
字段摘要
 
从类 java.text.DateFormat 继承的字段
AM_PM_FIELD, calendar, DATE_FIELD, DAY_OF_WEEK_FIELD, DAY_OF_WEEK_IN_MONTH_FIELD, DAY_OF_YEAR_FIELD, DEFAULT, ERA_FIELD, FULL, HOUR_OF_DAY0_FIELD, HOUR_OF_DAY1_FIELD, HOUR0_FIELD, HOUR1_FIELD, LONG, MEDIUM, MILLISECOND_FIELD, MINUTE_FIELD, MONTH_FIELD, numberFormat, SECOND_FIELD, SHORT, TIMEZONE_FIELD, WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD, YEAR_FIELD
 
构造方法摘要
SimpleDateFormat()
          用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
          用给定的模式和日期符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, Locale locale)
          用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat
 
方法摘要
 voidapplyLocalizedPattern(String pattern)
          将给定的本地化模式字符串应用于此日期格式。
 voidapplyPattern(String pattern)
          将给定模式字符串应用于此日期格式。
 Objectclone()
          创建此 SimpleDateFormat 的一个副本。
 booleanequals(Object obj)
          比较给定对象与此 SimpleDateFormat 的相等性。
 StringBufferformat(Date date, StringBuffer toAppendTo, FieldPosition pos)
          将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer
 AttributedCharacterIteratorformatToCharacterIterator(Object obj)
          格式化生成 AttributedCharacterIterator 的对象。
 Dateget2DigitYearStart()
          返回在 100 年周期内被解释的两位数字年份的开始日期。
 DateFormatSymbolsgetDateFormatSymbols()
          获取此日期格式的日期和时间格式符号的一个副本。
 inthashCode()
          返回此 SimpleDateFormat 对象的哈希码值。
 Dateparse(String text, ParsePosition pos)
          解析字符串的文本,生成 Date
 voidset2DigitYearStart(Date startDate)
          设置 100 年周期的两位数年份,该年份将被解释为从用户指定的日期开始。
 voidsetDateFormatSymbols(DateFormatSymbols newFormatSymbols)
          设置此日期格式的日期和时间格式符号。
 StringtoLocalizedPattern()
          返回描述此日期格式的本地化模式字符串。
 StringtoPattern()
          返回描述此日期格式的模式字符串。
 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值