1. 程式人生 > >關於java基礎--日期類與日曆類Calendar詳解測試

關於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);

}