java有三種方式可以獲取當前時間(目前我用到的,若有其他見解,望不吝賜教)
- System.currentTimeMillis() :返回類型爲Long,自1970年1月1日0時起的毫秒數
- Date:進入到源碼可以看到其實就是相當於Date(System.currentTimeMillis())
- Calendar:獲取當前系統時間,其中的Calendar.YEAR等方法代替了Date中的getYear等方法
注意:
Calendar中的獲取當前月份的方法:Calendar.MONTH 底層是從0開始計算,所以獲取的月份需要加1;
Calendar中的獲取當前周的第幾天的方法:Calendar.DAY_OF_WEEK 底層獲取一週中的第幾天是從週日開始的,所以當前一週中的第幾天需要減1;
下面是針對此三種方式的測試:
/*
* @description: 測試System.currentTimeMillis() Date 獲取時間的區別
*/
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Long mills = System.currentTimeMillis();
System.out.println("System.currentTimeMillis():mills=====>" + mills);
String currentStr = dateformat.format(System.currentTimeMillis());
System.out.println("System.currentTimeMillis():currentStr=====>" + currentStr);
Date date = new Date();
System.out.println("Date():date=====>" + date);
String dateStr = dateformat.format(date);
System.out.println("Date():dateStr=====>" + dateStr);
/*
* @description: 測試Calendar
*/
Calendar cal = Calendar.getInstance();
int dayCal = cal.get(Calendar.DATE);
int monthCal = cal.get(Calendar.MONTH) + 1;
int yearCal = cal.get(Calendar.YEAR);
int day_week = cal.get(Calendar.DAY_OF_WEEK);
int day_month = cal.get(Calendar.DAY_OF_MONTH);
int day_year = cal.get(Calendar.DAY_OF_YEAR);
System.out.println("Calendar:time======>" + cal.getTime());
System.out.println("Calendar:dayCal======> " + dayCal);
System.out.println("Calendar:monthCal======>" + monthCal);
System.out.println("Calendar:yearCal======>" + yearCal);
System.out.println("Calendar:day_week======>" + day_week); // 星期日爲一週的第一天輸出爲 1,星期一輸出爲 2,以此類推
System.out.println("Calendar:day_month======>" + day_month);
System.out.println("Calendar:day_year======>" + day_year);
執行結果:
Calendar的計算使用:
/*
* @description: Calendar計算
*/
//過去七天
cal.setTime(new Date());
cal.add(Calendar.DATE, - 7);
Date d = cal.getTime();
String day = dateformat.format(d);
System.out.println("Calendar:add()過去七天======>" + day);
//過去一月
cal.setTime(new Date());
cal.add(Calendar.MONTH, -1);
Date m = cal.getTime();
String mon = dateformat.format(m);
System.out.println("Calendar:add()過去一個月======>" + mon);
//當天的開始時間
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String daystart = format.format(cal.getTime())+" 00:00:00";
System.out.println("Calendar:add()當天的開始時間======>" + daystart);
//當天的截止時間
String dayend = format.format(cal.getTime())+" 23:59:59";
System.out.println("Calendar:add()當天的截止時間======>" + dayend);
執行結果:
相關Calendar的其他計算,可根據上邊方式進行使用。