时间类
Date类
Java提供了Date类来处理日期、时间,Date对象既包含日期,也包含时间。
示例代码:
public static void main(String[] args) {
//构造器
Date date= new Date();//获取当前时间的date对象
Date date2=new Date(System.currentTimeMillis());
System.out.println(date2);
System.out.println(date2.toString());
//getTime setTime
long longValue=date.getTime();
longValue+=10000;
date2.setTime(longValue);
System.out.println(date2.toString());
//比较
System.out.println("date.before(date2) ="+date.before(date2));
System.out.println("date.after(date2) ="+date.after(date2));
System.out.println("date.compareTo(date2) ="+date.compareTo(date2));
System.out.println("‐‐‐‐‐‐Date和String之间互转‐‐‐‐‐‐‐‐‐‐‐‐");
System.out.println("SimpleDateFormat 进行日期格式化");
SimpleDateFormat dateFormat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=dateFormat1.format(date);
System.out.println("strDate = " + strDate);
Date date3;
try {
//用parse 时要注意,被转换时间字符串格式必须和转换器声明的格式一致
date3=dateFormat1.parse(strDate);
System.out.println(date3);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
运行效果:
Calendar类
由于Date类过于古老,许多的构造器和方法都已经过时。Java推荐使用Calendar来完 成时间计算等操作。
示例代码:
public static void main(String[] args) {
// 使用默认时区和语言环境获得一个日历
Calendar cal=Calendar.getInstance();
System.out.println("---------获取时间----------");
//获取时间
System.out.println("年:"+cal.get(Calendar.YEAR));
System.out.println("月:"+(cal.get(Calendar.MONTH)+1));
System.out.println("日:"+cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时:"+cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:"+cal.get(Calendar.MINUTE));
System.out.println("秒:"+cal.get(Calendar.SECOND));
System.out.println("---------设置时间----------");
// 设置时间
// 1、使用set一次设置
// cal.set(year, month, date, hourOfDay, minute, second);//月是从0开始(0~11)
cal.set(2019, 4,4,4,4,4);
System.out.println(cal.getTime());
//2、单一字段一一设置
cal.set(Calendar.YEAR, 2019);
//cal.set(Calendar.MONTH, Calendar.APRIL);//使用英文的十二个月的单词
cal.set(Calendar.MONTH, 4-1);//月份要减一才是对应的月份
cal.set(Calendar.DAY_OF_MONTH, 4);
cal.set(Calendar.HOUR_OF_DAY, 4);
cal.set(Calendar.MINUTE, 4);
cal.set(Calendar.SECOND, 4);
System.out.println(cal.getTime());
System.out.println("---------时间计算----------");
//时间计算
System.out.println("----add----");
//add方法 根据日历的规则,为给定的日历字段添加或减去指定的时间量
cal.add(Calendar.MONTH,5);//+5个月
System.out.println(cal.getTime());
cal.add(Calendar.MONTH,-5);//-5个月
System.out.println(cal.getTime());
System.out.println("----roll----");
//roll方法 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。
cal.roll(Calendar.MONTH, 5);//+5个月
System.out.println(cal.getTime());
cal.roll(Calendar.MONTH, -5);//-5个月
System.out.println(cal.getTime());
//add方法会产生其他相关时间属性的连动变化
//roll方法只是对相应时间属性的域内做变化
System.out.println("----add 和 roll的区别----");
Calendar calAdd=Calendar.getInstance();
calAdd.add(Calendar.MONTH, 9);
System.out.println(calAdd.getTime());
Calendar calRoll=Calendar.getInstance();
calRoll.add(Calendar.MONTH, 9);
System.out.println(calRoll.getTime());
//Calendar和Date的相互转换
System.out.println("Date和Calendar 的相互转换");
//Calendar---> Date
Date date=cal.getTime();
System.out.println(date);
//Date---> Calendar
Calendar cal2=Calendar.getInstance();
cal2.setTime(date);
System.out.println(cal2.getTime());
}
运行结果: