關於java基礎--日期類與日曆類Calendar詳解測試
1,Date
Date d = new Date();
//建立日期比當前延遲100毫秒後的日期
Date d1 = new Date(System.currentTimeMillis()+100);
1-1,After()判斷d表示的日期是否在b1表示的之後
System.out.println(d.after(d1));
1-2,before()判斷d表示的日期是否在b1表示的之前
System.out.println(d.before(d1));
Date d2 = new Date();
Date d3 = new Date();//d2和d3為一個日期時間,也不在之前也不在之後
1-3,compareTo比較兩個日期的順序。
* 如果引數 Date 等於此 Date,則返回值 0;
* 如果此 Date 在 Date 引數之前,則返回小於 0 的值;
* 如果此 Date 在 Date 引數之後,則返回大於 0 的值。
System.out.println(d2.compareTo(d3));//0
2,DateFormat格式化日期
步驟:(1)建立當前時間Date()
(2)建立時間格式化類SimpleDateFormat()
(3)格式化時間:simple.format(date)
Date d = new Date();建立當前日期
//ThuOct 16 09:49:47 CST 2014,因為格式為西方,因此需要格式化為東方風格
3,SimpleDateFormat是一個格式化日期的類
構造器的引數是一個日期模板
* 年:yyyy表示月:MM表示日:dd表示
* 時:HH表示分:mm秒:ss毫秒:SS
SimpleDateFormat simple = new SimpleDateFormat("yyyy/MM/dd");
3-1,format(date)格式化日期用
String str = simple.format(d);
3-2,格式化日期包括年.月.日.時.分.秒
SimpleDateFormat simple01 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str1 = simple01.format(d);
SimpleDateFormat simple02 = new SimpleDateFormat("yyyy-MM-dd HH時mm分ss秒 \n E a 第w周");
String str2 = simple02.format(d);
3-3,parse(String)把日期格式化的字串轉為date型別
SimpleDateFormat simple03 = new SimpleDateFormat("yyyy-MM-dd");
String date = "2014-10-16";//一個日期型別的字串
try {
//呼叫方法把日期型別的字串轉換城date型別的資料
Date d2 = simple03.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
4,Calendar日曆類
//建立一個日曆類的物件
static Calendar c = Calendar.getInstance();
public static void test() {
System.out.println(c);
4-1,get()獲取方法
YEAR:當前日曆中的年份
int year = c.get(Calendar.YEAR);
DAY_OF_YEAR:獲取當前這一天是一年的第幾天
int dayNum = c.get(Calendar.DAY_OF_YEAR);
DATE獲取當前日曆中的天數
int date =c.get(Calendar.DATE);
MONTH獲取當前日曆中的月份(西方從0開始)
int month = c.get(Calendar.MONTH)+1;
DAY_OF_WEEK獲取當前日曆的星期幾
int week = c.get(Calendar.DAY_OF_WEEK)-1;
DAY_OF_WEEK_IN_MONTH 獲取日期處於當前月的第幾個星期
int dow =c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
AM_PM獲取當前時間是中午之前還是之後
int ap = c.get(Calendar.AM_PM);
WEEK_OF_YEAR當前的星期是這一年的第幾個星期
int woy = c.get(Calendar.WEEK_OF_YEAR);
WEEK_OF_MONTH獲取當前這個星期是這個月的第幾個星期
int wom = c.get(Calendar.WEEK_OF_MONTH);
4-2,Calendar.SATURDAY返回對應星期數在這個星期的第幾天
int sat = Calendar.SATURDAY;
4-2.add()方法
* 檢測新增天數超過本月的天數是否可以自動新增月份
* 如果當前的欄位+指定的值後,超過了這個欄位所表示的最大值時,
* 用add()這個欄位的上一級會自動增加
* 用roll超過了最大值後,上一級不會自動增加
//把當前的月份+1
c.add(Calendar.MONTH, 1);
//把當前的天數+4
c.add(Calendar.DATE, 4);
//把當前年份-14
c.add(Calendar.YEAR, -14)
4-3,根據時間算目前多大
public static void test2(){
Date da = c.getTime();
System.out.println(da);
long l = da.getTime();
System.out.println(l);
//設定出生年月1993-6-1
//方法一:
c.set(Calendar.YEAR, 1993);
c.set(Calendar.MONTH, 6);
c.set(Calendar.DATE, 1);
//方法二:
//c.set(1993, 6, 1);
//方法三:
//c.add(Calendar.MONTH, 7);
//c.add(Calendar.DATE, -2);
//c.add(Calendar.YEAR, -23);
Date da1 = c.getTime();
//獲取出生到1970-1-1之間的毫秒數
long l1 = da1.getTime();
long l2 =l-l1;
long l4 = l2/86400000/365;
System.out.println(l4);
int l3 = (int)(l2/86400000/365);
System.out.println(l3);
}