时间工具类DateU

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/River741132472/article/details/81776511

package com.ddtkj.common.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

/**
 * 工具类-日期处理
 *
 * @author xx
 * @version 2.0
 * @since 2014年1月28日
 */
public class DateUtil {
  private static final long ONE_MINUTE = 60;
  private static final long ONE_HOUR = 3600;
  private static final long ONE_DAY = 86400;
  private static final long ONE_MONTH = 2592000;
  private static final long ONE_YEAR = 31104000;
 
  /**
   * 日期转换为字符串 格式自定义
   *
   * @param date
   * @param f
   * @return
   */
  public static String dateStr(Date date, String f) {
    SimpleDateFormat format = new SimpleDateFormat(f);
    String str = format.format(date);
    return str;
  }
 
  public static long getSubDay(Date d) {
    Calendar nowDate = Calendar.getInstance(), oldDate = Calendar.getInstance();
    nowDate.setTime(new Date());// 设置为当前系统时间
    oldDate.setTime(DateUtil.valueOf(DateUtil.dateStr2(d)));
    long timeNow = nowDate.getTimeInMillis();
    long timeOld = oldDate.getTimeInMillis();
    long subDay = (timeNow - timeOld) / (1000 * 60 * 60 * 24);// 化为天
    return subDay;
  }
 
  /**
   * 两日期间的天数
   *
   * @param d
   * @return
   */
  public static long getSubDay(Date sd, Date ed) {
    Calendar startDate = Calendar.getInstance(), endDate = Calendar
        .getInstance();
    endDate.setTime(DateUtil.valueOf(DateUtil.dateStr2(ed)));// 设置为当前系统时间
    startDate.setTime(DateUtil.valueOf(DateUtil.dateStr2(sd)));
    long timeStart = startDate.getTimeInMillis();
    long timeEnd = endDate.getTimeInMillis();
    long subDay = (timeEnd - timeStart) / (1000 * 60 * 60 * 24);// 化为天
    return subDay;
  }
 
  /**
   * 两日期间的天数
   *
   * @param d
   * @return
   */
  public static long getSubDayHour(Date sd, Date ed) {
    Calendar startDate = Calendar.getInstance(), endDate = Calendar
        .getInstance();
    endDate.setTime(DateUtil.getDate10ByStr(DateUtil.dateStr4(ed),
        "yyyy-MM-dd HH:mm:ss"));// 设置为当前系统时间
    startDate.setTime(DateUtil.getDate10ByStr(DateUtil.dateStr4(sd),
        "yyyy-MM-dd HH:mm:ss"));
    long timeStart = startDate.getTimeInMillis();
    long timeEnd = endDate.getTimeInMillis();
    long subDay = (timeEnd - timeStart);// 化为天
    return subDay;
  }
 
  /**
   * 日期转换为字符串 MM月dd日 hh:mm
   *
   * @param date
   * @return
   */
  public static String dateStr(Date date) {
    return dateStr(date, "MM月dd日 hh:mm");
  }
 
  /**
   * 日期转换为字符串 yyyy-MM-dd
   *
   * @param date
   * @return
   */
  public static String dateStr2(Date date) {
    return dateStr(date, "yyyy-MM-dd");
  }
 
  /**
   * yyyy年MM月dd日HH时mm分ss秒
   *
   * @param date
   * @return
   */
  public static String dateStr5(Date date) {
    return dateStr(date, "yyyy年MM月dd日HH时mm分ss秒");
  }
 
  /**
   * yyyyMMddHHmmss
   *
   * @param date
   * @return
   */
  public static String dateStr3(Date date) {
    return dateStr(date, "yyyyMMddHHmmss");
  }
 
  /**
   * yyyy-MM-dd HH:mm:ss
   *
   * @param date
   * @return
   */
  public static String dateStr4(Date date) {
    return dateStr(date, "yyyy-MM-dd HH:mm:ss");
    
  }
 
  /**
   * yyyy年MM月dd日
   *
   * @param date
   * @return
   */
  public static String dateStr6(Date date) {
    return dateStr(date, "yyyy年MM月dd日");
  }
 
  /**
   * yyyyMMdd
   *
   * @param date
   * @return
   */
  public static String dateStr7(Date date) {
    return dateStr(date, "yyyyMMdd");
  }
 
  /**
   * MM-dd
   *
   * @param date
   * @return
   */
  public static String dateStr8(Date date) {
    return dateStr(date, "MM-dd");
  }
 
  /**
   * yyyy年MM月
   *
   * @param date
   * @return
   */
  public static String dateStr9(Date date) {
    return dateStr(date, "yyyy年MM月");
  }
 
  /**
   * MM月dd日
   *
   * @param date
   * @return
   */
  public static String dateStr10(Date date) {
    return dateStr(date, "MM月dd日");
  }
 
  /**
   * MM
   *
   * @param date
   * @return
   */
  public static String dateStr11(Date date) {
    return dateStr(date, "MM");
  }
 
  /**
   * MMdd
   *
   * @param date
   * @return
   */
  public static String dateStr12(Date date) {
    return dateStr(date, "MMdd");
  }
 
  /**
   * dd
   *
   * @param date
   * @return
   */
  public static String dateStr13(Date date) {
    return dateStr(date, "dd");
  }
 
  /**
   * 将时间戳转换为Date
   *
   * @param times
   * @return
   */
  public static Date getDate(String times) {
    long time = Long.parseLong(times);
    return new Date(time * 1000);
  }
 
  public static String dateStr(String times) {
    return dateStr(getDate(times));
  }
 
  public static String dateStr2(String times) {
    return dateStr2(getDate(times));
  }
 
  public static String dateStr3(String times) {
    return dateStr3(getDate(times));
  }
 
  public static String dateStr4(String times) {
    return dateStr4(getDate(times));
  }
 
  public static String dateStr5(String times) {
    return dateStr5(getDate(times));
  }
 
  /**
   * 将Date转换为时间戳
   *
   * @param date
   * @return
   */
  public static long getTime(Date date) {
    return date.getTime() / 1000;
  }
 
  public static int getDay(Date d) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    return cal.get(Calendar.DAY_OF_MONTH);
  }
 
  /**
   * s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象
   *
   * @param f
   * @return
   */
  public static Date valueOf(String s) {
    final int YEAR_LENGTH = 4;
    final int MONTH_LENGTH = 2;
    final int DAY_LENGTH = 2;
    final int MAX_MONTH = 12;
    final int MAX_DAY = 31;
    int firstDash;
    int secondDash;
    int threeDash = 0;
    int fourDash = 0;
    Date d = null;
    
    if (s == null) {
      throw new java.lang.IllegalArgumentException();
    }
    
    firstDash = s.indexOf('-');
    secondDash = s.indexOf('-', firstDash + 1);
    if (s.contains(":")) {
      threeDash = s.indexOf(':');
      fourDash = s.indexOf(':', threeDash + 1);
    }
    if ((firstDash > 0) && (secondDash > 0) && (secondDash < s.length() - 1)) {
      String yyyy = s.substring(0, firstDash);
      String mm = s.substring(firstDash + 1, secondDash);
      String dd = "";
      String hh = "";
      String MM = "";
      String ss = "";
      if (s.contains(":")) {
        dd = s.substring(secondDash + 1, threeDash - 3);
        hh = s.substring(threeDash - 2, threeDash);
        MM = s.substring(threeDash + 1, fourDash);
        ss = s.substring(fourDash + 1);
      } else {
        dd = s.substring(secondDash + 1);
      }
      if (yyyy.length() == YEAR_LENGTH && mm.length() == MONTH_LENGTH
          && dd.length() == DAY_LENGTH) {
        int year = Integer.parseInt(yyyy);
        int month = Integer.parseInt(mm);
        int day = Integer.parseInt(dd);
        int hour = 0;
        int minute = 0;
        int second = 0;
        if (s.contains(":")) {
          hour = Integer.parseInt(hh);
          minute = Integer.parseInt(MM);
          second = Integer.parseInt(ss);
        }
        if (month >= 1 && month <= MAX_MONTH) {
          int maxDays = MAX_DAY;
          switch (month) {
          // February determine if a leap year or not
            case 2:
              if ((year % 4 == 0 && !(year % 100 == 0)) || (year % 400 == 0)) {
                maxDays = MAX_DAY - 2; // leap year so 29 days in
                // February
              } else {
                maxDays = MAX_DAY - 3; // not a leap year so 28 days
                // in February
              }
              break;
            // April, June, Sept, Nov 30 day months
            case 4:
            case 6:
            case 9:
            case 11:
              maxDays = MAX_DAY - 1;
              break;
          }
          if (day >= 1 && day <= maxDays) {
            Calendar cal = Calendar.getInstance();
            cal.set(year, month - 1, day, hour, minute, second);
            cal.set(Calendar.MILLISECOND, 0);
            d = cal.getTime();
          }
        }
      }
    }
    if (d == null) {
      throw new java.lang.IllegalArgumentException();
    }
    return d;
  }
 
  /**
   * @author lijie
   * @param Begin
   * @param end
   *          传入开始时间 和 结束时间 格式如:2012-09-07
   * @return 返回Map 获取相隔多少年 get("YEAR")及为俩个时间年只差,月 天,类推 Key : YEAR MONTH DAY
   *         如果开始时间 晚于 结束时间 return null;
   */
 
  @SuppressWarnings("rawtypes")
  public static Map getApartTime(String Begin, String end) {
    String[] temp = Begin.split("-");
    String[] temp2 = end.split("-");
    if (temp.length > 1 && temp2.length > 1) {
      Calendar ends = Calendar.getInstance();
      Calendar begin = Calendar.getInstance();
      
      begin.set(StringUtil.toInt(temp[0]), StringUtil.toInt(temp[1]),
          StringUtil.toInt(temp[2]));
      ends.set(StringUtil.toInt(temp2[0]), StringUtil.toInt(temp2[1]),
          StringUtil.toInt(temp2[2]));
      if (begin.compareTo(ends) < 0) {
        Map map = new HashMap();
        ends.add(Calendar.YEAR, -StringUtil.toInt(temp[0]));
        ends.add(Calendar.MONTH, -StringUtil.toInt(temp[1]));
        ends.add(Calendar.DATE, -StringUtil.toInt(temp[2]));
        map.put("YEAR", ends.get(Calendar.YEAR));
        map.put("MONTH", ends.get(Calendar.MONTH) + 1);
        map.put("DAY", ends.get(Calendar.DATE));
        return map;
      }
    }
    return null;
  }
 
  /**
   * 前/后?分钟
   *
   * @param d
   * @param minute
   * @return
   */
  public static Date rollMinute(Date d, int minute) {
    return new Date(d.getTime() + minute * 60 * 1000);
  }
 
  /**
   * 前/后?天
   *
   * @param d
   * @param day
   * @return
   */
  public static Date rollDay(Date d, int day) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    cal.add(Calendar.DAY_OF_MONTH, day);
    return cal.getTime();
  }
 
  /**
   * 前/后?月
   *
   * @param d
   * @param mon
   * @return
   */
  public static Date rollMon(Date d, int mon) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    cal.add(Calendar.MONTH, mon);
    return cal.getTime();
  }
 
  /**
   * 前/后?年
   *
   * @param d
   * @param year
   * @return
   */
  public static Date rollYear(Date d, int year) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    cal.add(Calendar.YEAR, year);
    return cal.getTime();
  }
 
  public static Date rollDate(Date d, int year, int mon, int day) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    cal.add(Calendar.YEAR, year);
    cal.add(Calendar.MONTH, mon);
    cal.add(Calendar.DAY_OF_MONTH, day);
    return cal.getTime();
  }
 
  /**
   * 获取当前时间-时间戳字符串
   *
   * @return
   */
  public static String getNowTimeStr() {
    String str = Long.toString(System.currentTimeMillis() / 1000);
    return str;
  }
 
  /**
   * 将Date转换为时间戳
   *
   * @param time
   * @return
   */
  public static String getTimeStr(Date time) {
    long date = time.getTime();
    String str = Long.toString(date / 1000);
    return str;
  }
 
  public static String getTimeStr(String dateStr, String format) {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    Date date;
    try {
      date = sdf.parse(dateStr);
    } catch (ParseException e) {
      e.printStackTrace();
      return "";
    }
    String str = DateUtil.getTimeStr(date);
    return str;
  }
 
  public static String rollMonth(Date addTime, String time_limit) {
    Date t = DateUtil.rollDate(addTime, 0, StringUtil.toInt(time_limit), 0);
    return t.getTime() / 1000 + "";
  }
 
  public static String rollDay(Date addTime, String time_limit_day) {
    Date t = DateUtil.rollDate(addTime, 0, 0,
        StringUtil.toInt(time_limit_day));
    return t.getTime() / 1000 + "";
  }
 
  public static Date getIntegralTime() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
  }
 
  public static Date getLastIntegralTime() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
  }
 
  public static Date getLastSecIntegralTime(Date d) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(d.getTime());
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
  }
 
  public static long getTime(String format) {
    long t = 0;
    if (StringUtil.isBlank(format))
      return t;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date;
    try {
      date = sdf.parse(format);
      t = date.getTime() / 1000;
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return t;
  }
 
  // 获取本周日的日期
  public static String getCurrentWeekday() {
    int weeks = 0;
    int mondayPlus = DateUtil.getMondayPlus();
    GregorianCalendar currentDate = new GregorianCalendar();
    currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
    Date monday = currentDate.getTime();
    
    DateFormat df = DateFormat.getDateInstance();
    String preMonday = df.format(monday);
    return preMonday;
  }
 
  // 获得当前日期与本周日相差的天数
  private static int getMondayPlus() {
    Calendar cd = Calendar.getInstance();
    // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
    int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
    if (dayOfWeek == 1) {
      return 0;
    } else {
      return 1 - dayOfWeek;
    }
  }
 
  // 获得本周一的日期
  public static String getMondayOFWeek() {
    int weeks = 0;
    int mondayPlus = DateUtil.getMondayPlus();
    GregorianCalendar currentDate = new GregorianCalendar();
    currentDate.add(GregorianCalendar.DATE, mondayPlus);
    Date monday = currentDate.getTime();
    
    DateFormat df = DateFormat.getDateInstance();
    String preMonday = df.format(monday);
    return preMonday;
  }
 
  // 获取当前月第一天:
  public static String getFirstDayOfMonth(String first) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.add(Calendar.MONTH, 0);
    c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
    first = format.format(c.getTime());
    return first;
  }
 
  // 获取当月最后一天
  public static String getLastDayOfMonth(String last) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Calendar ca = Calendar.getInstance();
    ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
    last = format.format(ca.getTime());
    return last;
  }
 
  /**
   * 日期月份处理
   *
   * @param d
   *          时间
   * @param month
   *          相加的月份,正数则加,负数则减
   * @return
   */
  public static Date timeMonthManage(Date d, int month) {
    Calendar rightNow = Calendar.getInstance();
    rightNow.setTime(d);
    rightNow.add(Calendar.MONTH, month);
    return rightNow.getTime();
  }
 
  /**
   * 获取指定年月的最后一天
   *
   * @param year_time
   *          指定年
   * @param month_time
   *          指定月
   * @return
   */
  public static Date monthLastDay(int year_time, int month_time) {
    Calendar cal = Calendar.getInstance();
    cal.set(year_time, month_time, 0, 23, 59, 59);
    return cal.getTime();
  }
 
  /**
   * 获取指定年月的第一天
   *
   * @param year_time
   *          指定年
   * @param month_time
   *          指定月
   * @return
   */
  public static Date monthFirstDay(int year_time, int month_time) {
    Calendar cal = Calendar.getInstance();
    cal.set(year_time, month_time - 1, 1, 0, 0, 0);
    return cal.getTime();
  }
 
  /**
   * 获取指定时间月的第一天
   *
   * @param d
   *          指定时间,为空代表当前时间
   * @return
   */
  public static Date currMonthFirstDay(Date d) {
    Calendar cal = Calendar.getInstance();
    if (d != null)
      cal.setTime(d);
    cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
    cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.get(Calendar.DATE), 0, 0, 0);
    return cal.getTime();
  }
 
  /**
   * 获取指定时间月的最后一天
   *
   * @param d
   *          指定时间,为空代表当前时间
   * @return
   */
  public static Date currMonthLastDay(Date d) {
    Calendar cal = Calendar.getInstance();
    if (d != null)
      cal.setTime(d);
    cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
    cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.get(Calendar.DATE), 23, 59, 59);
    return cal.getTime();
  }
 
  /**
   * 距离今天多久
   *
   * @param date
   * @return
   *
   */
  public static String fromToday(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    
    long time = date.getTime() / 1000;
    long now = new Date().getTime() / 1000;
    long ago = now - time;
    if (ago <= ONE_HOUR)
      return ago / ONE_MINUTE + "分钟前";
    else if (ago <= ONE_DAY)
      return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE) + "分钟前";
    else if (ago <= ONE_DAY * 2)
      return "昨天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
          + calendar.get(Calendar.MINUTE) + "分";
    else if (ago <= ONE_DAY * 3)
      return "前天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
          + calendar.get(Calendar.MINUTE) + "分";
    else if (ago <= ONE_MONTH) {
      long day = ago / ONE_DAY;
      return day + "天前" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
          + calendar.get(Calendar.MINUTE) + "分";
    } else if (ago <= ONE_YEAR) {
      long month = ago / ONE_MONTH;
      long day = ago % ONE_MONTH / ONE_DAY;
      return month + "个月" + day + "天前" + calendar.get(Calendar.HOUR_OF_DAY)
          + "点" + calendar.get(Calendar.MINUTE) + "分";
    } else {
      long year = ago / ONE_YEAR;
      int month = calendar.get(Calendar.MONTH) + 1;// JANUARY which is 0
      // so month+1
      return year + "年前" + month + "月" + calendar.get(Calendar.DATE) + "日";
    }
    
  }
 
  /**
   * 获取指定时间的年
   *
   * @param date
   *          指定时间
   * @return
   */
  public static int getTimeYear(Date date) {
    if (date == null)
      date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.YEAR);
  }
 
  /**
   * 获取指定时间的月
   *
   * @param date
   *          指定时间
   * @return
   */
  public static int getTimeMonth(Date date) {
    if (date == null)
      date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.MONTH) + 1;
  }
 
  /**
   * 获取指定时间的天
   *
   * @param date
   *          指定时间
   * @return
   */
  public static int getTimeDay(Date date) {
    if (date == null)
      date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.DATE);
  }
 
  public static Date getFirstSecIntegralTime(Date d) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(d.getTime());
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.MILLISECOND, 0);
    cal.set(Calendar.DATE, 0);
    return cal.getTime();
  }
 
  /**
   * 获取指定时间天的结束时间
   *
   * @param d
   * @return
   */
  public static Date getDayEndTime(long d) {
    Date day = new Date(d * 1000);
    if (d <= 0)
      day = new Date();
    Calendar cal = Calendar.getInstance();
    if (day != null)
      cal.setTimeInMillis(day.getTime());
    cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.get(Calendar.DATE), 23, 59, 59);
    return cal.getTime();
  }
 
  /**
   * 获取指定时间天的开始时间
   *
   * @param d
   * @return
   */
  public static Date getDayStartTime(long d) {
    Date day = new Date(d * 1000);
    if (d <= 0)
      day = new Date();
    Calendar cal = Calendar.getInstance();
    if (day != null)
      cal.setTimeInMillis(day.getTime());
    cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.get(Calendar.DATE), 0, 0, 0);
    return cal.getTime();
  }
 
  /**
   * 获取19位的格式时间
   *
   * @param dateStr
   * @return
   * @throws ParseException
   */
  public static Date getDateByFullDateStr(String dateStr) {
    try {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      return sdf.parse(dateStr);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
 
  /**
   * 获取10位的格式时间
   *
   * @param dateStr
   * @return
   * @throws ParseException
   */
  public static Date getDate10ByStr(String dateStr, String format) {
    try {
      SimpleDateFormat sdf = new SimpleDateFormat(format);
      return sdf.parse(dateStr);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
 
  /**
   * 获得当前年份和月
   *
   * @param date
   * @param i
   * @return
   */
  public static String currYearMonth(Date date, int i) {
    String currDate;
    
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int month = cal.get(Calendar.MONTH) + i;
    int year = cal.get(Calendar.YEAR);
    currDate = year + String.format("%02d", month);
    return currDate;
  }
 
  /**
   * 字符串转为日期
   *
   * @param dateTime
   * @param format
   * @return
   */
  public static Date str2Date(String dateTime, String format) {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    Date date = null;
    try {
      date = sdf.parse(dateTime);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return date;
  }
  /**
   * 日期转换字符串
   *
   * @param dateTime
   * @param format
   * @return
   */
  public static String date2Str(Date date, String f) {
    SimpleDateFormat format = new SimpleDateFormat(f);
    String str = format.format(date);
    return str;
  }
 
  /**
   * 在日期上增加天数
   * @param date
   * @param n
   * @return
   */
  public static Date addDay(Date date, int n) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE, n);
    return cal.getTime();
  }
 
 
  /**
   * 虚拟资产列表发布时间格式化
   * @author [email protected]
   * @date 2018-04-18
   * @return
   */
  public static String publishTimeFormat(Date publishTime) {
      
      //刚刚发布:一小时内发布
      //今日发布:1小时前-24小时内
      //昨日发布:24小时前-48小时内
      //三日内发布:48小时前-72小时
      //七日内发布:72小时前-7天内
      //七日前发布:超过7天的
      if(publishTime!=null){
        long timeDiff = System.currentTimeMillis()-publishTime.getTime();
        
        if(timeDiff<=1*60*60*1000) {
          return "刚刚发布";
        } else if(timeDiff>1*60*60*1000 && timeDiff<= 24*60*60*1000) {
          return "今日发布";
        } else if(timeDiff>48*60*60*1000 && timeDiff<= 72*60*60*1000) {
          return "三日内发布";
        } else if(timeDiff>72*60*60*1000 && timeDiff<= 168*60*60*1000) {
          return "七日内发布";
        } else {
          return "七日前发布";
        }
      }
      return "刚刚发布";
      
  }
 
  /**
     * 虚拟资产列表市场动态格式化
     * @author wangmingxi
     * @date 2018.4.25
     * @param date
     * @return
     */
    public static String formationDate(Date date) {  
        String dateString = "";  
        // 获取系统当前时间  
        Date now = new Date();  
        long endTime = now.getTime();   
        long currentTime= date.getTime();   
        // 计算两个时间点相差的秒数  
        long seconds = (endTime - currentTime);  
        if (seconds<60*60*1000) {  
             dateString = seconds/1000/60+"分钟前";  
        }else if (seconds<60*60*24*1000) {  
             dateString = seconds/1000/60/60+"小时前";  
        }else if (seconds>60*60*24*1000) {  
             dateString =seconds/1000/60/60/24+ "天前";  
        }  
        return dateString;  
    }
}

public List<String> getBetweenDate(long startTime, long endTime){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    // 声明保存日期集合
    List<String> list = new ArrayList<String>();

    Date dateStart = new Date(startTime*1000L);
    Date endStart = new Date(endTime*1000L);
    String start = sdf.format(dateStart);
    String end = sdf.format(endStart);
    try {
        // 转化成日期类型
        Date startDate = sdf.parse(start.toString());
        Date endDate = sdf.parse(end.toString());

        //用Calendar 进行日期比较判断
        Calendar calendar = Calendar.getInstance();
        while (startDate.getTime()<=endDate.getTime()){
            // 把日期添加到集合
            list.add(sdf.format(startDate));
            // 设置日期
            calendar.setTime(startDate);
            //把日期增加一天
            calendar.add(Calendar.DATE, 1);
            // 获取增加后的日期
            startDate=calendar.getTime();
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return list;
}

private int dayForWeek(String pTime) throws Exception {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.setTime(format.parse(pTime));
    int dayForWeek = 0;
    if(c.get(Calendar.DAY_OF_WEEK) == 1){
        dayForWeek = 7;
    }else{
        dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
    }
    return dayForWeek;
}

猜你喜欢

转载自blog.csdn.net/River741132472/article/details/81776511