JAVA 获取时间的类有很多,今天对Date类与Calendar类进行使用总结
1、获取当前时间及转化
Date date = new Date();
System.out.println(date);
//cal作为Calendar类的子类对象,对应用户所在的时区
Calendar cal = Calendar.getInstance();
System.out.println(now.getTime());
时间的输出格式
//date
Wed Jul 31 09:31:25 GMT+08:00 2019
//cal
Wed Jul 31 09:43:16 GMT+08:00 2019
Calendar 和 Date 转化
// Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date caltodate=cal.getTime();
// Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
2、格式修改并打印
//时间格式类型
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
//转化为 string 类型
String dateStr= formatter.format(date);
//打印当前日期2019-07-31
System.out.println(dateStr);
Calendar calendar = Calendar.getInstance();
//打印当前日期2019-07-31
System.out.println(formatter.format(calendar.getTime()));
3、获取年、月、日
Calendar now = Calendar.getInstance();
System.out.println(now.getTime());
System.out.println("年:" + now.get(Calendar.YEAR));
//老外把一月份整成了0,翻译成中国月份要加1
System.out.println("月:" + (now.get(Calendar.MONTH) + 1));
System.out.println("日:" + now.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + now.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + now.get(Calendar.MINUTE));
System.out.println("秒:" + now.get(Calendar.SECOND));
4、输出指定日期
Calendar :月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2019-07-31 9:57:59 可以这样
Calendar cal = Calendar.getInstance();
// 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2019, 6, 31, 9, 57, 59);
// 或者6个字段分别进行设置,由于月份下标从0开始赋值月份要-1
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, Calendar.JULY);
cal.set(Calendar.DAY_OF_MONTH, 31);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 57);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());
Date :获取时间需要传入参数,一般情况下参数是符合规则的string
String dateStr = '2019-07-31';
//获取string对应date日期:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr );
5、获取当前是星期几
/*
* 注:格式化字符串存在区分大小写
*对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“七月”;MM代表月份,如“07”;yyyy代表年份,如“2019”;dd代表天,如“31”
*/
Date date = new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
String currSun = dateFm.format(date);
System.out.println(currSun);
/**
* Calendar获取当前日期是星期几
* 国外从星期日开始计算
* @param date
* @return 当前日期是星期几
*/
public String getWeekOfDate(Date date) {
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
5、获取制定日期的年、月、日、星期
/**
* 前/后?天
* @param d
* @param day
* @return
*/
public static final Date rollDay(Date d, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.DAY_OF_MONTH, day);
return cal.getTime();
}
public static void main(String[] args) {
Date date = new Date();
//一周前
Date lastdate = rollDay(date, -7);
Calendar lastweek = Calendar.getInstance();
lastweek.setTime(lastdate);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(formatter.format(lastdate));
System.out.println("月:" + (lastweek .get(Calendar.MONTH) + 1));
System.out.println("日:" + lastweek .get(Calendar.DAY_OF_MONTH));
}