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的其他计算,可根据上边方式进行使用。