123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- package cn.efunbox.base.util;
- import org.apache.commons.lang3.time.DateFormatUtils;
- import org.apache.commons.lang3.time.DateUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Locale;
- /**
- * 日期工具类
- */
- public class DateUtil {
- private static Logger log = LoggerFactory.getLogger(DateUtil.class);
- private static final String DEFAULT_PATTERN = "yyyy-MM-dd";
- /**
- * 一天的毫秒数
- */
- public static long TIME_OF_ONE_DAY = 24 * 60 * 60 * 1000;
- /**
- * 将日期转换为字符串
- *
- * @return
- */
- public static String dateFormat() {
- return dateFormat(new Date(), "yyyy-MM-dd HH:mm:ss");
- }
- public static String dateFormat(String pattern) {
- return dateFormat(new Date(), pattern);
- }
- public static String dateFormat(Date date, String pattern) {
- SimpleDateFormat sdf = new SimpleDateFormat(pattern);
- return sdf.format(date);
- }
- public static String dateFormatDay(Date date) {
- SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
- return sdf.format(date);
- }
- /**
- * 字符串转换为日期
- *
- * @param source
- * @return
- * @throws ParseException
- */
- public static Date StrToDate(String source) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- try {
- return sdf.parse(source);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Date StrToDate(String source, String pattern) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat(pattern);
- return sdf.parse(source);
- }
- /**
- * 增加年
- *
- * @param date
- * @param i
- * @return
- */
- public static Date addYears(Date date, int i) {
- return DateUtils.addYears(date, i);
- }
- /**
- * 增加月
- *
- * @param date
- * @param i
- * @return
- */
- public static Date addMonths(Date date, int i) {
- return DateUtils.addMonths(date, i);
- }
- /**
- * 增加小时
- *
- * @param date
- * @param amount
- * @return
- */
- public static Date addHours(Date date, int amount) {
- return DateUtils.addHours(date, amount);
- }
- /**
- * 增加天数
- *
- * @param date
- * @param amount
- * @return
- */
- public static Date addDays(Date date, int amount) {
- return DateUtils.addDays(date, amount);
- }
- /**
- * 日期格式换行为GMT格式
- *
- * @param date
- * @return
- */
- public static String toGMTString(Date date) {
- SimpleDateFormat df = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK);
- df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));
- return df.format(date);
- }
- /**
- * 获取传入日期和当前当前日期相隔分钟数
- *
- * @param date
- * @return
- * @throws ParseException
- */
- public static int getDateDiffMinutes(String date){
- long intervalMilli = 0;
- try {
- long now = System.currentTimeMillis();
- long ago = StrToDate(date, "yyyy-MM-dd HH:mm:ss").getTime();
- intervalMilli = now - ago;
- if (intervalMilli < 0) {
- return 0;
- }
- }catch (Exception e){
- e.printStackTrace();
- return 0;
- }
- return (int)(intervalMilli / (60 * 1000));
- }
- /**
- * 获取传入日期相隔分钟数
- * date1 - data
- * @param date
- * @param date1
- * @return
- * @throws ParseException
- */
- public static int getDateDiffMinutes(String date,String date1){
- long intervalMilli = 0;
- try {
- long time = StrToDate(date, "yyyy-MM-dd HH:mm:ss").getTime();
- long time1 = StrToDate(date1, "yyyy-MM-dd HH:mm:ss").getTime();
- intervalMilli = time1 - time;
- if (intervalMilli < 0) {
- return 0;
- }
- }catch (Exception e){
- e.printStackTrace();
- return 0;
- }
- return (int)(intervalMilli / (60 * 1000));
- }
- /**
- * 获取传入日期和当前当前日期相隔天数
- *
- * @param date
- * @return
- * @throws ParseException
- */
- public static int getDateDiffDays(String date) throws ParseException {
- long now = System.currentTimeMillis();
- long ago = StrToDate(date, "yyyy-MM-dd").getTime();
- long intervalMilli = now - ago;
- if (intervalMilli < 0) {
- return 0;
- }
- return (int) (intervalMilli / (24 * 3600 * 1000));
- }
- public static int getDateDiffDays2(String date) throws ParseException {
- long now = System.currentTimeMillis();
- long ago = StrToDate(date, "yyyy-MM-dd").getTime();
- long intervalMilli = ago - now;
- if (intervalMilli < 0) {
- return 0;
- }
- return (int) (intervalMilli / (24 * 3600 * 1000));
- }
- /**
- * 获取传入日期和当前当前日期相隔年数
- *
- * @param date
- * @return
- * @throws ParseException
- */
- public static int getDateDiffYears(Date date) {
- Calendar cal1 = Calendar.getInstance();
- cal1.setTime(date);
- Calendar cal2 = Calendar.getInstance();
- cal2.setTime(new Date());
- return cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR);
- }
- /**
- * 将DATE类型转成String类型,pattern默认为yyyy-MM-dd
- *
- * @return
- */
- public static String getDateStr() {
- Date date = new Date();
- SimpleDateFormat formater = new SimpleDateFormat(DEFAULT_PATTERN);
- return formater.format(date);
- }
- public static String getTomorrowDateStr() {
- Date date = new Date(System.currentTimeMillis() + TIME_OF_ONE_DAY);
- SimpleDateFormat formater = new SimpleDateFormat(DEFAULT_PATTERN);
- return formater.format(date);
- }
- public static String getPreDateStr() {
- Date date = new Date(System.currentTimeMillis() - TIME_OF_ONE_DAY);
- SimpleDateFormat formater = new SimpleDateFormat(DEFAULT_PATTERN);
- return formater.format(date);
- }
- public static String formatPreDayEndTime(String date) {
- // Date date = new Date(System.currentTimeMillis() - TIME_OF_ONE_DAY);
- // return DateFormatUtils.format(date, "yyyy-MM-dd 23:59:59");
- return date + " 23:59:59";
- }
- public static String formatPreDayStartTime(String date) {
- // Date date = new Date(System.currentTimeMillis() - TIME_OF_ONE_DAY);
- // return DateFormatUtils.format(date, "yyyy-MM-dd 00:00:00");
- return date + " 00:00:00";
- }
- public static Date getPreDayStartTime() {
- String format = DateFormatUtils.format(new Date(System.currentTimeMillis() - TIME_OF_ONE_DAY), "yyyy-MM-dd 00:00:00");
- java.text.DateFormat dfNew = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try {
- return dfNew.parse(format);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return new Date();
- }
- public static void main(String[] args) throws Exception {
- //Date preDayStartTime = getPreDayStartTime();
- //System.out.println(preDayStartTime);
- //System.out.println(formatPreDayEndTime());
- //System.out.println(dateFormat(new Date(),"yyyyMMdd"));
- //System.out.println(getDateDiffMinutes("2020-05-13 12:23:30","2020-05-13 12:25:59"));
- //String questionList = "BD1521101|BD1521102|BD1521103";
- //String[] questionCodeList = questionList.splitc("\\|");
- System.out.println(getDateDiffDays2("2021-02-22"));
- Date date = addDays(new Date(),getDateDiffDays2("2021-03-02")+1);
- System.out.println(dateFormat(date,"yyyy-MM-dd"));
- }
- }
|