iT邦幫忙

DAY 4
1

java菜鳥的學習筆記系列 第 4

簡易格式化日期 in java

今日分享學習java中Calendar(java.util.Calendar)以及SimpleDateFormat(java.text.SimpleDateFormat)相關的方法,用於格式化日期以及轉換。
參考書籍中敘述原java.util.Date中許多方法已depreciated,經上網查該API確實如此,相關操作日期的方法移到java.util.Calendar,Calendar支援世界上常用的日曆系統,通常使用子類別GregorianCalendar(很難拚),取得時間的方法跟Date中差不多,另提供取得本周第一天(getFirstDayofWeek),取得Time Zone(getTimeZone)等,有用到的時候再查即可。

要格式化日期最簡單的方法應該是使用SimpleDateFormat類別,簡單來說就是把所需的日期格式以字串指定給Constructor,例如yyyy是西元、MM是月份,大小寫意義不同,可詳API Documentation,該類別中的format即實現格式化日期的方法,傳入Date物件(可有Calendar相關方法產生),傳出指定格式之Date物件,parse方法可以用指定之日期格式解析傳入字串,範例如下:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

public class DateFormatter implements Runnable{
	private SimpleDateFormat formatter=new SimpleDateFormat("yyyy/MM/dd"); //時間格式1
	private SimpleDateFormat formatter2=new SimpleDateFormat("MM/dd/yyyy");//時間格式2
	private static final String dt="09/21/2012";//預設要轉換的日期
	public String getTime(){ //取得現在幾時幾分幾秒
		Calendar cal= new GregorianCalendar(); //取得GregorianCalendar物件
		int hour= cal.get(Calendar.HOUR_OF_DAY); // get 現在時間(幾時)
		int minute=cal.get(Calendar.MINUTE); // get 現在時間(幾分)
		int second=cal.get(Calendar.SECOND); // get 現在時間(幾秒)
		return addZero(hour)+":"+addZero(minute)+":"+addZero(second);
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			System.out.println(getTime()); //現在幾時幾分幾秒
			System.out.println(Calendar.getInstance(Locale.TAIWAN).getTime()); 
			//現在完整時期格式,Calendar類別可指定Time Zone
			System.out.println(formatter.format(Calendar.getInstance(Locale.TAIWAN).getTime()));
			//呼叫SimpleDateFormat中的format方法,將傳入的時間(Date)以指定的格式傳回
			try {
				System.out.println(formatter.format(formatter2.parse(dt)));
				//轉換日期格式:
				//SimpleDateFormat中的parse方法可以將傳入的字串以指定格式解析後傳回Date物件
				//再使用format方法即可轉換成指定格式
			} catch (ParseException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
	public String addZero(int number){ //數字小於10補0
		return number<10 ? "0"+number : ""+ number;
	}
}

上一篇
使用iText產生PDF檔-Part 1
下一篇
使用java NIO2-Part 2, WacthService
系列文
java菜鳥的學習筆記28

尚未有邦友留言

立即登入留言