1.String转Date
private void StringtoDate() throws ParseException {
String dateStr = "2018-08-07 16:24:35";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateStr);
}
2.Date转String
private void DatetoString() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateStr = sdf.format(date);
}
3.时间戳转Date
private void timeStamptoDate() throws ParseException {
long timeStamp = System.currentTimeMillis();
Date date = new Date();
}
4.Date转时间戳
private void DatetotimeStamp() throws ParseException {
Date date = new Date();
long timeStamp = date.getTime();
}
在date和时间戳互相转换的过程中,并不是在转换,时间戳是Date类的一个属性,可以把转换理解为拿和调用构造,这点在Date的源码中可以看出。
public class Date
implements java.io.Serializable, Cloneable, Comparable<Date>
{
private static final BaseCalendar gcal =
CalendarSystem.getGregorianCalendar();
private static BaseCalendar jcal;
//此处为时间戳保存的变量,使用了transient 关键字防止此变量被序列化
private transient long fastTime;
..............
//无参构造,当我们调用new Date()时,其实Date类自动调用了其有参构造,并传输了System.currentTimeMillis()系统时间ms为参数
public Date() {
this(System.currentTimeMillis());
}
//有参构造 这里是把参数赋值,完成实例化
public Date(long date) {
fastTime = date;
}
...............
5.处理获取某n天前/后的时间
/**
* 处理加减天数
*
* @param strDate 需要处理的时间集合
* @param day 需要增减的天数
*/
private List<String> handleDate(List<String> strDate, int day) {
List<String> formatDateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
try {
for (String date : strDate) {
calendar.setTime(sdf.parse(date));
calendar.add(Calendar.DATE, day);
formatDateList.add(sdf.format(calendar.getTime()));
}
} catch (ParseException e) {
e.printStackTrace();
}
return formatDateList;
}
6.处理多个时间段间隔某个时段的时间点
/**
* 处理时间段内的时间点
*
* @param each_time 时间间隔(分钟)
* @param time 时间段中间用,隔开2018-08-08 15:04,2018-08-08 18:04
* @return
*/
public List<String> handleTime(int each_time, String... time) {
List<String> formatDateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
for (String times : time) {
String timer[] = times.split("-");
long startTime = sdf.parse(timer[0]).getTime();
Long endTime = sdf.parse(timer[1]).getTime();
while (startTime <= endTime) {
formatDateList.add(sdf.format(new Date(startTime)));
startTime += 60 * 1000 * each_time;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return formatDateList;
}