最近做项目用到这两个类,还是很方便的,很想分享给大家。
业务背景介绍
首先说下业务场景,我们做的是oa系统,在创建流程的时候,让用户输入一个时间,然后流程延后启动。那么用户在输入时间的时候,就有两种方式可以选择:
- 具体的时间,比如 2020/05/25 08:00:00,流程将会在这个时间节点启动;
- 输入增量,比如延后 0年0月3天2时0分0秒;
由于前台往后台传的是json字符串,后台需要做的是解析成具体的时间date,然后以固定的格式返回给用户,比如“2020-05-25,08:00”。
- 由字符串解析成Date需要用到的是SimpleDateFormat的parse()方法;
- 计算延后的时间用的是Calender类;
- 将Date以固定格式转成string类型用到的是SimpleDateFormat的format()方法;
SimpleDateFormat函数语法:
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中(0~23)
m 分
s 秒
代码实现
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateService {
/**
* 将string类型的时间转换成 Date格式
*
* */
public Date getDateFromDateMsg() throws ParseException {
String dateMsg = "2020/05/25 08:00:00"; //应该写在传入参数中
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date parseDate = simpleDateFormat.parse(dateMsg);
return parseDate;
}
/**
* 计算延后 x年x月x天x时x分x秒 的时间
*
* */
public Date getDateFromIncreMsg() throws ParseException {
byte year = 0; //应该写在传入参数中
byte month = 0;
byte day = 3;
byte hour = 2;
byte minute = 0;
byte second = 0 ;
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.YEAR, year);
calendar.add(Calendar.MONTH, month);
calendar.add(Calendar.DAY_OF_MONTH, day);
calendar.add(Calendar.HOUR_OF_DAY, hour);
calendar.add(Calendar.MINUTE, minute);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 返回规整格式后的时间
* */
public String dateFormat(Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd,hh:mm");
String dateFormat = simpleDateFormat.format(date);
return dateFormat;
}
}
总结
SimpleDateFormat的parse()方法用来解析时间,format()方法用来将Date类型按照固定格式返回string;
Calender类用于对日期进行操作。