date SimpleDateFormat Calendar等幾種時間日期類的簡略分析
Calendar類
這是一個對時間操作的類
該類是一個abstract類,提供了getInstance方法來例項化Calendar類 :Calendar rightNow = Calendar.getInstance();
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int week = cal.get(Calendar.WEEK_OF_MONTH);
String weeks ="";
switch (week) {
case 1:weeks="星期天";
break;
case 2:weeks="星期一";
break;
case 3:weeks="星期二";
break;
case 4:weeks="星期三";
break;
case 5:weeks="星期四";
break;
case 6:weeks="星期五";
break;
default:weeks="星期六";
break;
}
int hour = cal.get(Calendar.HOUR_OF_DAY);//24小時制
// int h1 = cal.get(Calendar.HOUR);//12小時制
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
String h,m,s;
if(hour<10) h = "0"+hour; else h = hour+"";
if(minute<10) m = "0"+minute; else m = minute+"";
if(second<10) s = "0"+second; else s = second+"";
}輸出:今天是: 2018年12月14日星期五 05:35:26
add
public abstract void add(int field, int amount)
根據日曆的規則,為給定的日曆欄位新增或減去指定的時間量。例如,要從當前日曆時間減去 5 天,可以通過呼叫以下方法做到這一點:
add(Calendar.DAY_OF_MONTH, -5)
。
public final void set(int year, int month, int date, int hourOfDay, int minute)
設定日曆欄位 YEAR
、 MONTH
、 DAY_OF_MONTH
、 HOUR_OF_DAY
和 MINUTE
的值。保留其他欄位以前的值。如果不需要這樣做,則先呼叫 clear()
。
引數:
year
- 用來設定 YEAR
日曆欄位的值。
month
- 用來設定 MONTH
日曆欄位的值。Month 值是基於 0 的。例如,0 表示 January。
date
- 用來設定 DAY_OF_MONTH
hourOfDay
- 用來設定 HOUR_OF_DAY
日曆欄位的值。
minute
- 用來設定 MINUTE
日曆欄位的值。
引數:
field
- 日曆欄位。
amount
- 為欄位新增的日期或時間量。
date類
兩個構造方法:
Date(): 分配 Date
物件並初始化此物件,以表示分配它的時間(精確到毫秒)
相當於System.currentTimeMillis()
Date(long date):分配 Date
物件並初始化此物件,以表示自從標準基準時間(稱為“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。
其他方法:
System.currentTimeMillis():獲取當前的時間戳,該時間是從1970年到現在的毫秒戳
getTime():返回自1970年1月1號以來Date物件表示 的毫秒值
setTime(): 設定此 Date
物件,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time
毫秒的時間點。
compareTo(Date t){
當前物件和t比較
當前物件大,返回正數
當前物件小,返回負數
相等,返回0
}
public static void main(String[] args) {
Date date1 = new Date();
Date date2 = new Date(100000000000L);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//設定毫秒值
date1.setTime(15447907409690L);
//getTime方法返回一個long型別的毫秒值
long time = date1.getTime();
System.out.println(time);//sf物件的方法
String d = sf.format(date1);
String s = sf.format(date2);
System.out.println(date1);
System.out.println(date2);
System.out.println(d);
System.out.println(s);
}
SimpleDateFormat類
是一個以與語言環境有關的方式來格式化和解析日期的具體類
簡單來說就是日期格式工具類
建立物件
new SimpleDateFormat("yyyy-MM-dd")||| 構造方法中有很多格式,詳情可以檢視API
方法:
format(Date date, StringBuffer toAppendTo, FieldPosition pos)
將給定的 Date
格式化為日期/時間字串,並將結果新增到給定的 StringBuffer
。
date
- 要被格式化為日期-時間字串的日期-時間值。
toAppendTo
- 新的日期-時間文字被新增的位置。
pos
- 格式化的位置。輸入時:如果需要,是一個對齊欄位。輸出時:為對齊欄位的偏移量。
parse(Stirng s)
將一個按照SimpleDateFormat的格式的String資料轉換成date型別
topattern()
返回描述此日期格式的模式字串。如返回yyyy-MM-dd;
private static long f(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss"); Date ss = sdf.parse(date); String format = sdf1.format(new Date()); System.out.println(format); System.out.println(ss); long t = ss.getTime()-System.currentTimeMillis(); t= t/1000/60/60/24; return t; }