日期時間處理
public class date_test {
public static void main(String args[]){
makeUDateObject(); //產生 util.Date
makeSDateObject(); //產生 sql.Date
DateObjectsTran(); //日期相關 Object互轉
getNowTimestamp(); //取得目前時間的 Timestamp long
timestamp2StringDate(System.currentTimeMillis(), "yyyy-MM-dd" ); //Timestamp 轉 日期字串
StringDate2timestamp("2012-01-01"); //日期字串 轉 Timestamp
StringDate2YMD("2012-05-01"); //日期字串 轉 Y,M,D
CountDiffDate("2012-03-01","2012-04-01"); //計算兩日期差異值
addDate(); //增減日期
compareDate(); //日期比較(相等、較早、較晚)
}
/**
* 產生Util Date object
*/
private static void makeUDateObject() {
System.out.println("=取得 uDate =================");
//方法1, 用 Timestamp 把 string 轉 date object
java.util.Date d1 = new java.util.Date(Timestamp.valueOf("2012-05-01 00:00:00").getTime());
System.out.println("Timestamp to Date objcet =>"+d1.toString());
//方法2, 用 SimpleDateFormat 把 String Date 轉 date object
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.TAIWAN);
java.util.Date d2 = new java.util.Date();
try {
d2= sdf.parse("2012-05-01");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("String use SimpleDateFormate to Date objcet =>"+d2.toString());
System.out.println("");
}
/**
* 產生Sql Date object
*/
private static void makeSDateObject() {
System.out.println("=取得 sDate =================");
//方法1, 用 Timestamp 把 string 轉 date object
java.sql.Date d1 = new java.sql.Date(Timestamp.valueOf("2012-05-01 00:00:00").getTime());
System.out.println("Timestamp to Date objcet =>"+d1.toString());
//方法2, String 轉 date object
java.sql.Date d2 = java.sql.Date.valueOf("2012-05-01"); //不能有時分秒
System.out.println("String use sDate.valueOf to Date objcet =>"+d2.toString());
System.out.println("");
}
/**
* Util Date 轉 Sql Date
*/
private static void DateObjectsTran() {
java.util.Date uDate = new java.util.Date(Timestamp.valueOf("2012-05-01 00:00:00").getTime());
java.sql.Date sDate = java.sql.Date.valueOf("2012-05-01");
System.out.println("=Util,Sql Date 互轉 =================");
// java.util.Date --> java.sql.Date
java.sql.Date sDate1 = new java.sql.Date(uDate.getTime());
// java.sql.Date --> java.util.Date
java.util.Date uDate1 = new java.util.Date(sDate.getTime());
System.out.println("use getTime() =>"+sDate1.toString()+"|"+uDate1.toString());
System.out.println("");
System.out.println("=Util,Calendar 互轉 =================");
// java.util.Date --> java.util.Calendar
Calendar cal = Calendar.getInstance(Locale.TAIWAN);
cal.setTime(uDate);
System.out.println("use cal.setTime() to Calendar =>"+cal.getTimeInMillis());
// java.util.Calendar --> java.util.Date
java.util.Date uDate2 = cal.getTime();
System.out.println("use cal.getTime() to uDate =>"+uDate2.getTime());
System.out.println("");
}
/**
* 取得現在時間 Timestamp
*/
private static void getNowTimestamp() {
System.out.println("=取得現在時間 Timestamp =================");
//方法1, System
System.out.println("System.currentTimeMillis() =>"+System.currentTimeMillis());
//方法2, Calendar
Calendar c = Calendar.getInstance(Locale.TAIWAN);
System.out.println("Calendar.getTime() =>"+c.getTime());
System.out.println("Calendar.getTimeInMillis() =>"+c.getTimeInMillis());
//方法3, util.Date
System.out.println("java.util.Date().getTime() =>"+ new java.util.Date().getTime());
//方法4, util.Date + timestamp
java.util.Date uDate = new java.util.Date();
java.sql.Timestamp ts = new java.sql.Timestamp(uDate.getTime());
System.out.println("timestamp.getTime() =>"+ts.getTime());
System.out.println("");
}
/**
* timestamp 轉 String Date
* @param tstamp
* @param DATE_FORMAT
*/
private static void timestamp2StringDate(long tstamp, String DATE_FORMAT) {
System.out.println("=timestamp 轉 String Date============");
//java timestamp 單位為"微秒",與 php 的 timestamp 多 1000倍
//方法1, sql.Date
java.sql.Date sDate = new java.sql.Date(tstamp);
System.out.println("sDate.toString=>"+sDate.toString());
//方法2, SimpleDateFormat
java.util.Date uDate = new java.util.Date(tstamp);
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT,Locale.TAIWAN);
System.out.println("simpleDateFormat.format(uDate)=>"+sdf.format(uDate));
System.out.println("simpleDateFormat.format(sDate)=>"+sdf.format(sDate));
//方法3, date String (只能取得全格式,要單一取需經過 SimpleDateFormat)
java.util.Date uDate2 = new java.util.Date(tstamp);
System.out.println("uDate.toString=>"+uDate2.toString());
System.out.println("");
}
/**
* String Date 轉 timestamp
* @param string
*/
private static void StringDate2timestamp(String stringDate) {
System.out.println("=String Date 轉 timestamp============");
//方法1, Timestamp (String 格式必須包含時分秒 yyyy-mm-dd hh:mm:ss)
System.out.println("Timestamp.valueOf=>"+Timestamp.valueOf(stringDate+" 00:00:00").getTime());
//方法2, Calendar.set
String[] d = stringDate.split("-");
Calendar cal = Calendar.getInstance(Locale.TAIWAN);
cal.clear(); //務必先清除 (clear 之後好像要設定什麼預設值)
cal.set(Integer.valueOf(d[0]), (Integer.valueOf(d[1])-1), Integer.valueOf(d[2]));
System.out.println("Calendar.set=>"+cal.getTimeInMillis());
System.out.println("");
}
/**
* String Date 轉 YMD
* @param string
*/
private static void StringDate2YMD(String stringDate) {
System.out.println("=String Date 轉 YMD============");
Calendar cal = Calendar.getInstance(Locale.TAIWAN);
cal.setTime(java.sql.Date.valueOf(stringDate));
//月份請 +1
System.out.println("use cal.get(Calendar.YEAR) =>年=>" + cal.get(Calendar.YEAR) + "月" + (cal.get(Calendar.MONTH)+1) + "日" +cal.get(Calendar.DATE));
System.out.println("");
}
/**
* 計算時間差
*/
private static void CountDiffDate(String date1, String date2) {
System.out.println("=計算時間差(日期)============");
long diff = java.sql.Date.valueOf(date2).getTime() - java.sql.Date.valueOf(date1).getTime();
long dates = diff/(1000*60*60*24);
System.out.println(date2 + " 與 " + date1 + " 差 " + dates + "天");
Calendar cal1 = Calendar.getInstance(Locale.TAIWAN);
System.out.println("");
}
/**
* 加減日期
*/
private static void addDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("=加減日期============");
Calendar cal = Calendar.getInstance(Locale.TAIWAN);
cal.setTime(java.sql.Date.valueOf("2012-05-01"));
//調整日(自動進位)
cal.add(Calendar.DATE,+1);
System.out.println("cal.add +1 date=>"+sdf.format(cal.getTime()));
cal.add(Calendar.DATE,-2);
System.out.println("cal.add -1 date=>"+sdf.format(cal.getTime()));
//回歸
cal.add(Calendar.DATE,+1);
//調整日(不自動進位)
cal.roll(Calendar.DATE,+1);
System.out.println("cal.roll +1 date=>"+sdf.format(cal.getTime()));
cal.roll(Calendar.DATE,-2);
System.out.println("cal.roll -1 date=>"+sdf.format(cal.getTime()));
System.out.println("");
}
/**
* 日期比較
*/
private static void compareDate() {
java.sql.Date sDate1 = java.sql.Date.valueOf("2012-05-01");
java.sql.Date sDate2 = java.sql.Date.valueOf("2012-02-01");
System.out.println("Date1="+sDate1+",Date2="+sDate2);
System.out.println("較晚 Date1.after Date2 =>"+sDate1.after(sDate2));
System.out.println("較早 Date1.before Date2 =>"+sDate1.before(sDate2));
System.out.println("相同 Date1.equals Date2 =>"+sDate1.equals(sDate2));
System.out.println("");
}
}
Date - make Date object
- java timestamp -> string date v
- string date-> java timestamp v
- string date -> year , month , day v
- year, month, day -> string date v(直接用 - 接起來)
- string date +- diff date
- string date count diff date
Time
- java timestamp -> string time
- string time -> java timestamp
- string time -> hour, min, sec
- hour, min, sec ->string time
- string time +- diff time
- string time count diff time
Date對象
日期時間處理
Reviewed by Wild
on
8/23/2012 02:43:00 下午
Rating:

沒有留言:
沒有Google帳號也可發表意見唷!