1:Date类型转换为字符串
Date date = DateUtil.date();
// 年月日2022-03-31
System.out.println("年月日" + DateUtil.formatDate(date));
// 时分秒16:49:08
System.out.println("时分秒" + DateUtil.formatTime(date));
// 年月日 时分秒2022-03-31 16:49:08
System.out.println("年月日 时分秒" + DateUtil.formatDateTime(date));
//SimpleDateFormat进行时间的转换
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
//时间Date转字符串
String format1 = format.format(date);
//20220331
System.out.println(format1);
2:字符串时间转Date
//说明:格式是“20201010”、“2020-1010”或者“2020.10.10”,要转换为Date都是用Hutool中的DateUtil.parse()方式,parse()会自动识别字符串获得Date类型数据,获取到的date格式是2020-10-10类型。这样就不需要判断用户输入的是什么类型的时间字符串。
String strTime = "2020.10.10";
// 输出2020-10-10 00:00:00
Date date = DateUtil.parse(strTime);
System.out.println("字符串转时间:" + date);
// 如果字符串时间不是完整格式,例如2020-10
//注意:如果字符串的格式为2020.02,没有完整日期,DateUtil.parse()会识别不出来,要通过后面加上格式样式才可以。
String strTime2 = "2020-10";
// 输出 2020-10-01 00:00:00
Date date2 = DateUtil.parse(strTime2,"yyyy-MM");
System.out.println("时间转字符串:" + date2);
//SimpleDateFormat进行时间的转换
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
//字符串转时间Date
try {
Date parse = format.parse("2022-03-31");
//输出Fri Dec 03 00:00:00 CST 2021
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
3:自定义一个时间工具类
import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
/**
* 获取指定日期的开始时间,即指定日期的凌晨
* @param date
* @return Thu Mar 31 00:00:00 CST 2022
*/
public static Date getStartDate(Date date) {
Calendar instance = Calendar.getInstance();
instance.setTime(date);
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
return instance.getTime();
}
/**
* 获取指定日期的结束时间 即指定日期的23:59:59
* @param date
* @return Thu Mar 31 23:59:59 CST 2022
*/
public static Date getEndDate(Date date) {
Calendar instance = Calendar.getInstance();
instance.setTime(date);
instance.set(Calendar.HOUR_OF_DAY, 23);
instance.set(Calendar.MINUTE, 59);
instance.set(Calendar.SECOND, 59);
return instance.getTime();
}
/**
* 获取过去或者未来任意天内的日期数组
* @param intervals
* @param flag
* @return
*/
public static ArrayList<Date> getDayList(Integer intervals, Boolean flag) {
if (flag) {
ArrayList<Date> pastDaysList = Lists.newArrayList();
for (int i = 0; i < intervals; i++) {
pastDaysList.add(getPastDate(i));
}
return pastDaysList;
} else {
ArrayList<Date> futureDaysList = Lists.newArrayList();
for (int i = 0; i < intervals; i++) {
futureDaysList.add(getFutureDate(i));
}
return futureDaysList;
}
}
/**
* 获取过去几天内的日期时间
* @param past
* @return 带有时分秒的具体时间
*/
public static Date getPastDate(Integer past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
return calendar.getTime();
}
/**
* 获取未来几天内的日期时间
* @param past
* @return 带有时分秒的具体时间
*/
public static Date getFutureDate(Integer past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
return calendar.getTime();
}
/**
* 获取日期差
* @param beforeDate,currentDate
* @return 整数时间
*/
public static int differentDays(Date beforeDate, Date currentDate) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(beforeDate);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(currentDate);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if (year1 != year2) //跨年
{
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年
{
timeDistance += 366;
} else //不是闰年
{
timeDistance += 365;
}
}
return timeDistance + (day2 - day1);
} else //同年
{
System.out.println("判断day2 - day1 : " + (day2 - day1));
return day2 - day1;
}
}
}