Java日期相关操作

1. Date

大多数方法已经废弃,目前保留且常用的方法如下:

//获取当前时间
Date date = new Date();
//设定时间
Date date = new Date(long time);
//获取long类型表示时间
long time = date.getTime();
//设定时间
date.setTime(long time);
//检测时间是否延迟于when
boolean result = date.after(Date when);
//检测时间是否提前于when
boolean result = date.before(Date when);
2. Calendar

推荐使用Calendar来进行比较复杂的日期计算,使用方法也相对简单。

//创建Calendar
Calendar calendar = Calendar.getInstance();
//获取时间,返回类型为Date
Date date = calendar.getTime();
//设定时间,参数类型为Date
calendar.setTime(new Date());

通常使用Calendar来对日期进行延后或追溯,例如获取当前日期的前几天或者后几天日期,Calendar提供了便捷的方法可以获取到指定日期,包括月份、星期等具体日期。

//1. 获取当前日期前三个星期的日期
Calendar calendar = Calendar.getInstance();
//-3表示向前推,WEEK_OF_MONTH则表示是以周单位进行日期回溯,
//Caldendar提供了多种时间单位,可以根据需要使用
calendar.add(Calendar.WEEK_OF_MONTH, -3);
Date hisDate = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
System.out.println("today date:" + sdf.format(new Date()) + "\nhistory week date:" + sdf.format(hisDate));
//2. 获取当前日期前三个星期的星期五的日期
calendar.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
hisDate = calendar.getTime();
System.out.println("today date:" + sdf.format(new Date()) + "\nhistory week date:" + sdf.format(hisDate));
3 . 日期类型转化

实际应用中日期的习惯表示方式一般为String或Long类型,因此Java中提供了日期类型转化方式。

//格式自定义,例如:yyyy-MM-dd、yyyy-MM-dd hh:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(hisDate);
//将自己的日期格式转换为Date类型
String time = "20170615";
date = sdf.parse(time);

Java提供了Date类型与String类型的相互转换,但是实际中Date类型所能计算的日期功能有限,因此一般使用Calendar进行复杂的日期计算,然后将Calendar转换为Date,再进一步将Date转换为自己需要的格式类型。

//日期类型转换方式
Date   -------------> String  use SimpleDateFormat format(Date date)
Date   <------------- String  use SimpleDateFormat parse(String date)

Calendar -----------> Date use Calendar getTime()
Calendar <----------- Date use Calendar setTime(Date date)

你可能感兴趣的:(Java日期相关操作)