天天看點

java日期處理Date:Calender:

Date:

Date類位于java.util包下,由于存在千年蟲問題,現在Date的大部分方法都已經不再使用。目前使用的主要有long getTime()方法擷取給定Date時間對應的毫秒值以及Date getTime(long sec)方法根據給定時間設定為Date對象或者直接使用構造器new Date(long sec)

public class DateDemo {
	public static void main(String[] args) {
		/**
		 * 擷取目前時間
		 */
		Date date = new Date();
		System.out.println(date);
		/**
		 * 擷取目前時間的毫秒值
		 */
		long sec = date.getTime();
		System.out.println(sec);
		/**
		 * 通過一個毫秒值讓Date去描述這個對象
		 */
		date.setTime(sec);
		System.out.println(date);
	}
}
           

 SimpleDateFormat

SimpleDateFormat類位于java.text包下,是java.txt.DateFormat的子

java.lang.Object      
  --java.text.Format      
      --java.text.DateFormat      
          --java.text.SimpleDateFormat      
字母 日期或時間元素 表示 示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周數 Number 27
W 月份中的周數 Number 2
D 年中的天數 Number 189
d 月份中的天數 Number 10
F 月份中的星期 Number 2
E 星期中的天數 Text Tuesday; Tue
a Am/pm 标記 Text PM
H 一天中的小時數(0-23) Number
k 一天中的小時數(1-24) Number 24
K am/pm 中的小時數(0-11) Number
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
S 毫秒數 Number 978
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800

經常使用SimpleDateFormat類下的format(Date date)方法對已知的Date對象進行格式化。

/**
 * 将Date對象格式化
 * @author Pursuit.
 * @version 2013-11-22  上午8:42:18
 */
public class SimpleDateFormatFormat {
	public static void main(String[] args) {
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 kk:mm:ss E");
		//對應格式 2013年11月22日 08:47:14 星期五
		String str = sdf.format(now);
		System.out.println(str);
	}
}
           

 經常使用SimpleDateFormat類下的Date parse(String str)方法對已知的String對象進行轉換。

/**
 * 使用SimpleDateFormat
 * 進行字元串按照指定格式解析為Date對象
 * @author Administrator
 *
 */
public class SimpleDateFormatDemo2 {
	public static void main(String[] args) throws ParseException {
		//定義一個日期的字元串
		String str = "2013/12/30 15:22:45";
		
		/**
		 *   2013/12/30 15:22:45"
		 *   yyyy/MM/dd HH:mm:ss
		 */
		SimpleDateFormat sdf = 
			new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		/**
		 * Date parse(String str)
		 * 将給定的字元串按照給定的格式解析成Date對象
		 */
		Date date = sdf.parse(str);
		
		System.out.println(date);
	}
}
           

Calender:

Calendar位于java.util包下,目前使用較多的日期類。

public class CalendarDemo {
	public static void main(String[] args) {		
		/**
		 * 根據目前系統地區建立Calendar執行個體
		 * 預設建立出來的Calendar描述的是目前系統時間
		 * java.util.Calendar
		 */
		Calendar calendar = Calendar.getInstance();	
//		System.out.println(calendar);
		/**
		 * Date getTime()
		 * 以Date形式描述目前Calendar所描述的時間
		 */
		Date date = calendar.getTime();		
/**
		 * void setTime(Date date)
		 * 讓目前Calendar描述給定的Date對象所描述的時間
		 */		calendar.setTime(new Date());		
		System.out.println(date);		
	}
}
           

設定和擷取時間

/**
 * 設定和擷取時間
 * @author Administrator
 *
 */
public class CalendarDemo2 {
	public static void main(String[] args) {
		//建立目前系統時間的月曆類
		Calendar calendar = Calendar.getInstance();
		//輸出時間
		System.out.println(calendar.getTime());
		
		/**
		 * 将目前時間中的年設定為1995
		 */
		calendar.set(Calendar.YEAR, 1995);
		//輸出時間
		System.out.println(calendar.getTime());
		
		/**
		 * 将目前時間中的月設定為5月
		 * 月在Calendar中有對應的常量
		 * 若寫數字,0表示1月,以此類推
		 */
		calendar.set(Calendar.MONTH, 4);
		//輸出時間
		System.out.println(calendar.getTime());
		
		/**
		 * 将目前時間中的日設定為5号
		 * Calendar.DATE          表示的是月中的某一天
		 * Calendar.DAY_OF_MONTH  和DATE常量一摸一樣
		 * 
		 * Calendar.DAY_OF_WEEK   表示星期中的某一天
		 * 
		 * Calendar.DAY_OF_YEAR   表示年中的某一天
		 * 
		 */
		calendar.set(Calendar.DATE, 5);
		//輸出時間
		System.out.println(calendar.getTime());
		
		/**
		 * Calendar.HOUR          表示12小時制的小時 0-11
		 * Calendar.HOUR_OF_DAY   表示24小時制的小時
		 * 
		 */
		calendar.set(Calendar.HOUR, 4);
		//輸出時間
		System.out.println(calendar.getTime());
		
		
		/**
		 * 擷取目前Calendar中的某一個時間機關的值
		 */
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		
		System.out.println("現在是" + year + "年");
		System.out.println(month + 1 + "月");
		System.out.println(day + "日");
		/**
		 * 對于星期而言,1表示星期日,2表示星期一,以此類推
		 */
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(
				"星期" + 
				( dayOfWeek==1 ? 7 : dayOfWeek-1 )				
		);
		/**
		 * 檢視1995年的5月5号是一年中的第幾天
		 */
		int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("是一年中的第"+dayOfYear+"天");
		
	}
}
           

 設定時間值溢出時系統會自動增加至下一月、下一年

import java.util.Calendar;
/**
 * Calendar設定時間的溢出問題
 * @author Administrator
 *
 */
public class CalendarDemo3 {
	public static void main(String[] args) {
		
		Calendar calendar = Calendar.getInstance();
		/**
		 * 當設定的值超過了該值允許的最大值時,會将相應的時間
		 * 機關進行進位,這裡就會對月進行進位
		 */
		calendar.set(Calendar.DAY_OF_MONTH, 32);
		//Mon Dec 02 08:55:03 CST 2013
		System.out.println(calendar.getTime());
	}
}
           

總結

String到Date以及Date到String使用的是SimpleDateFormat類

Date到Calendar以及Calendar到Date使用的是Calendar下的setTime(Date date)以及Clendar下的Date getTime()方法