/**
*
*/
package com.teradata.springboot.util;
import com.teradata.springboot.common.bean.R;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
/**
* 时间工具类
*
* @author t-xiabin
*
*/
public class DateTimeUtil {
public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DAY_FORMAT = "yyyy-MM-dd";
public static String getToday() {
return getToday(DEFAULT_DAY_FORMAT);
}
public static String getToday(String formatStr) {
return dateToStr(new Date(), formatStr);
}
/**
* 获取两个时间字符串的时间差(毫秒数)
*
* @param startDateTime
* 开始时间
* @param endDateTime
* 结束时间
* @return
*/
public static long getMillisForTimeDifference(String startDateTime, String endDateTime) {
return getMillisForTimeDifference(startDateTime, endDateTime, DEFAULT_FORMAT);
}
/**
* 获取两个时间字符串的时间差(毫秒数)
*
* @param startDateTime
* 开始时间
* @param endDateTime
* 结束时间
* @param dateTimeType
* 时间格式(如:yyyy-MM-dd HH:mm:ss)
* @return
*/
public static long getMillisForTimeDifference(String startDateTime, String endDateTime, String dateTimeType) {
DateTime dateTimeStart = str2DateTime(startDateTime, dateTimeType);
DateTime dateTimeEnd = str2DateTime(endDateTime, dateTimeType);
if (dateTimeStart.isAfter(dateTimeEnd)) {
DateTime temp = dateTimeStart;
dateTimeStart = dateTimeEnd;
dateTimeEnd = temp;
}
return dateTimeEnd.getMillis() - dateTimeStart.getMillis();
}
/**
* 时间字符串转换成时间
*
* @param dateTimeStr
* 时间字符串
* @return
*/
public static Date str2Date(String dateTimeStr) {
return str2Date(dateTimeStr, DEFAULT_FORMAT);
}
/**
* 时间字符串转换成时间
*
* @param dateTimeStr
* 时间字符串
* @param formatStr
* 时间格式
* @return
*/
public static Date str2Date(String dateTimeStr, String formatStr) {
DateTime dateTime = str2DateTime(dateTimeStr, formatStr);
return dateTime.toDate();
}
/**
* 时间转换成字符串
*
* @param date
* 时间
* @return
*/
public static String dateToStr(Date date) {
return dateToStr(date, DEFAULT_FORMAT);
}
/**
* 时间转换成字符串
*
* @param date
* 时间
* @param formatStr
* 时间格式
* @return
*/
public static String dateToStr(Date date, String formatStr) {
if (date == null) {
return StringUtils.EMPTY;
}
DateTime dateTime = new DateTime(date);
return dateTime.toString(formatStr);
}
/**
* 时间字符串转换成datetime