日期和日历类
1、日期类 Date
在Java中用于表示日期的类 java.util.Date() ,用于获取日期和时间的对象, 不过这个类的一些方法以及过时(被日历类取代)
创建日期类
Date date = new Date();
Date date = new Date(long) ;
// 创建日期类的对象
Date date = new Date();
//获取当前时间 以 标准格式
System.out.println(date);
// 获取当前时间的毫秒数
System.out.println(date.getTime());
//通过毫秒数构建当前时区的 时间
Date date2 = new Date(100000);
System.out.println(date2);
// 获取 纪元时间 相隔本地时间8时区
System.out.println(date.toGMTString());
System.out.println(date.toLocaleString());
//测试时间的先后
System.out.println(date.after(date2));// true
System.out.println(date.before(date2));//false
System.out.println(date.compareTo(date2));//比较时间大小
// 时间转成字符串
System.out.println(date.toString());
2、日历类 Calendar
java.util.Calendar 是表示日历类, 它是一个单例模式 ,通过 getInstance()获取一个日历对象, 并获取日历的任意时间,日期。
常用方法
getInstance() : 获取日历对象
get() :获取指定的单位的日历数值 (年,月,日 等等)
set():设置指定单位的日历数值
add() :添加指定单位的日历数值
getTimeInMills() :获取日期的毫秒数
// 获取当前日历对象
Calendar cal = Calendar.getInstance();
// 日历的属性 (fields)
System.out.println(Calendar.DATE);
System.out.println(Calendar.YEAR);
System.out.println(Calendar.MONTH);
//获取当前日历的年份
System.out.println(cal.get(Calendar.YEAR));
// 获取月份 (返回 0-11)
System.out.println(cal.get(Calendar.MONTH));
// 获取日(1-31)
System.out.println(cal.get(Calendar.DATE));
// 获取日期
System.out.println("获取当前日历的日期:"+ cal.getTime());
// 添加日历 (指定的field 和 数量)
// 将当前日历添加2个月
cal.add(Calendar.MONTH ,2);
System.out.println("新的日期:"+cal.getTime());
cal.add(Calendar.DATE,-3);
System.out.println("新的日期:"+cal.getTime());
// 判断日期的前后 after before
// 题目 给定两个日期, 计算相差多少天
Calendar cal1 = Calendar.getInstance();
计算两个日历(日期)的相差天数/月数
// 重写构建一个时间
Calendar cal2 = Calendar.getInstance();
// 设置指定的时间
cal2.set(2020,10,20);
System.out.println("cal2---"+cal2.getTime());
// 原始方式 通过毫秒数计算
long n = cal1.getTimeInMillis()-cal2.getTimeInMillis();
System.out.println("n---->"+n);
long days = n/(1000*60*60*24);
System.out.println("days:"+days);
// java8 的方式
LocalDate date1 = LocalDate.of(2020,2,22);
LocalDate date2 = LocalDate.of(2020,3,22);
long days2 = date1.until(date2,ChronoUnit.DAYS);
System.out.println("两个时间相差的天数:"+ days2);
3、字符串与日期格式的转换
/**
* 字符串转日期
* @param str
*/
public static Date strToDate(String str) throws ParseException {
//使用格式化日期类 指定格式 :yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 指定格式的字符串 转成 日期
return sdf.parse(str);
}
/**
* 日期转指定格式的字符串
*/
public static String dateToString(Date date){
// 使用同样的方式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
return sdf.format(date);
}
// 调用转换方法
String s = "2020-10-22 10:10:10";
Date myDate= strToDate(s); // 注意 这里的格式需要匹配yyyy-MM-dd HH:mm:ss
System.out.println(myDate);
// 将日期转成字符串
System.out.println(dateToString(myDate));