zoukankan      html  css  js  c++  java
  • java Date时间格式工具类DateUtil

    package com.common;


    import java.sql.Timestamp;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.List;

    /**
    * 日期工具类
    */
    public class DateUtil{

    // ==格式到年==
    /**
    * 日期格式,年份,例如:2004,2008
    */
    public static final String DATE_FORMAT_YYYY = "yyyy";


    // ==格式到年月 ==
    /**
    * 日期格式,年份和月份,例如:200707,200808
    */
    public static final String DATE_FORMAT_YYYYMM = "yyyyMM";

    /**
    * 日期格式,年份和月份,例如:200707,2008-08
    */
    public static final String DATE_FORMAT_YYYY_MM = "yyyy-MM";


    // ==格式到年月日==
    /**
    * 日期格式,年月日,例如:050630,080808
    */
    public static final String DATE_FORMAT_YYMMDD = "yyMMdd";

    /**
    * 日期格式,年月日,用横杠分开,例如:06-12-25,08-08-08
    */
    public static final String DATE_FORMAT_YY_MM_DD = "yy-MM-dd";

    /**
    * 日期格式,年月日,例如:20050630,20080808
    */
    public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd";

    /**
    * 日期格式,年月日,用横杠分开,例如:2006-12-25,2008-08-08
    */
    public static final String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";

    /**
    * 日期格式,年月日,例如:2016.10.05
    */
    public static final String DATE_FORMAT_POINTYYYYMMDD = "yyyy.MM.dd";

    /**
    * 日期格式,年月日,例如:2016年10月05日
    */
    public static final String DATE_TIME_FORMAT_YYYY年MM月DD日 = "yyyy年MM月dd日";


    // ==格式到年月日 时分 ==

    /**
    * 日期格式,年月日时分,例如:200506301210,200808081210
    */
    public static final String DATE_FORMAT_YYYYMMDDHHmm = "yyyyMMddHHmm";

    /**
    * 日期格式,年月日时分,例如:20001230 12:00,20080808 20:08
    */
    public static final String DATE_TIME_FORMAT_YYYYMMDD_HH_MI = "yyyyMMdd HH:mm";

    /**
    * 日期格式,年月日时分,例如:2000-12-30 12:00,2008-08-08 20:08
    */
    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI = "yyyy-MM-dd HH:mm";


    // ==格式到年月日 时分秒==
    /**
    * 日期格式,年月日时分秒,例如:20001230120000,20080808200808
    */
    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISS = "yyyyMMddHHmmss";

    /**
    * 日期格式,年月日时分秒,年月日用横杠分开,时分秒用冒号分开
    * 例如:2005-05-10 23:20:00,2008-08-08 20:08:08
    */
    public static final String DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";


    // ==格式到年月日 时分秒 毫秒==
    /**
    * 日期格式,年月日时分秒毫秒,例如:20001230120000123,20080808200808456
    */
    public static final String DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS = "yyyyMMddHHmmssSSS";


    // ==特殊格式==
    /**
    * 日期格式,月日时分,例如:10-05 12:00
    */
    public static final String DATE_FORMAT_MMDDHHMI = "MM-dd HH:mm";


    /* ************工具方法*************** */

    /**
    * 获取某日期的年份
    * @param date
    * @return
    */
    public static Integer getYear(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.YEAR);
    }

    /**
    * 获取某日期的月份
    * @param date
    * @return
    */
    public static Integer getMonth(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.MONTH) + 1;
    }

    /**
    * 获取某日期的日数
    * @param date
    * @return
    */
    public static Integer getDay(Date date){
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int day=cal.get(Calendar.DATE);//获取日
    return day;
    }

    /**
    * 格式化Date时间
    * @param time Date类型时间
    * @param timeFromat String类型格式
    * @return 格式化后的字符串
    */
    public static String parseDateToStr(Date time, String timeFromat){
    DateFormat dateFormat=new SimpleDateFormat(timeFromat);
    return dateFormat.format(time);
    }

    /**
    * 格式化Timestamp时间
    * @param timestamp Timestamp类型时间
    * @param timeFromat
    * @return 格式化后的字符串
    */
    public static String parseTimestampToStr(Timestamp timestamp,String timeFromat){
    SimpleDateFormat df = new SimpleDateFormat(timeFromat);
    return df.format(timestamp);
    }

    /**
    * 格式化Date时间
    * @param time Date类型时间
    * @param timeFromat String类型格式
    * @param defaultValue 默认值为当前时间Date
    * @return 格式化后的字符串
    */
    public static String parseDateToStr(Date time, String timeFromat, final Date defaultValue){
    try{
    DateFormat dateFormat=new SimpleDateFormat(timeFromat);
    return dateFormat.format(time);
    }catch (Exception e){
    if(defaultValue!=null)
    return parseDateToStr(defaultValue, timeFromat);
    else
    return parseDateToStr(new Date(), timeFromat);
    }
    }

    /**
    * 格式化Date时间
    * @param time Date类型时间
    * @param timeFromat String类型格式
    * @param defaultValue 默认时间值String类型
    * @return 格式化后的字符串
    */
    public static String parseDateToStr(Date time, String timeFromat, final String defaultValue){
    try{
    DateFormat dateFormat=new SimpleDateFormat(timeFromat);
    return dateFormat.format(time);
    }catch (Exception e){
    return defaultValue;
    }
    }

    /**
    * 格式化String时间
    * @param time String类型时间
    * @param timeFromat String类型格式
    * @return 格式化后的Date日期
    */
    public static Date parseStrToDate(String time, String timeFromat) {
    if (time == null || time.equals("")) {
    return null;
    }

    Date date=null;
    try{
    DateFormat dateFormat=new SimpleDateFormat(timeFromat);
    date=dateFormat.parse(time);
    }catch(Exception e){

    }
    return date;
    }

    /**
    * 格式化String时间
    * @param strTime String类型时间
    * @param timeFromat String类型格式
    * @param defaultValue 异常时返回的默认值
    * @return
    */
    public static Date parseStrToDate(String strTime, String timeFromat,
    Date defaultValue) {
    try {
    DateFormat dateFormat = new SimpleDateFormat(timeFromat);
    return dateFormat.parse(strTime);
    } catch (Exception e) {
    return defaultValue;
    }
    }

    /**
    * 当strTime为2008-9时返回为2008-9-1 00:00格式日期时间,无法转换返回null.
    * @param strTime
    * @return
    */
    public static Date strToDate(String strTime) {
    if(strTime==null || strTime.trim().length()<=0)
    return null;

    Date date = null;
    List<String> list = new ArrayList<String>(0);

    list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
    list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS);
    list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI);
    list.add(DATE_TIME_FORMAT_YYYYMMDD_HH_MI);
    list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISS);
    list.add(DATE_FORMAT_YYYY_MM_DD);
    //list.add(DATE_FORMAT_YY_MM_DD);
    list.add(DATE_FORMAT_YYYYMMDD);
    list.add(DATE_FORMAT_YYYY_MM);
    list.add(DATE_FORMAT_YYYYMM);
    list.add(DATE_FORMAT_YYYY);


    for (Iterator iter = list.iterator(); iter.hasNext();) {
    String format = (String) iter.next();
    if(strTime.indexOf("-")>0 && format.indexOf("-")<0)
    continue;
    if(strTime.indexOf("-")<0 && format.indexOf("-")>0)
    continue;
    if(strTime.length()>format.length())
    continue;
    date = parseStrToDate(strTime, format);
    if (date != null)
    break;
    }

    return date;
    }

    /**
    * 解析两个日期之间的所有月份
    * @param beginDateStr 开始日期,至少精确到yyyy-MM
    * @param endDateStr 结束日期,至少精确到yyyy-MM
    * @return yyyy-MM日期集合
    */
    public static List<String> getMonthListOfDate(String beginDateStr, String endDateStr) {
    // 指定要解析的时间格式
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM");
    // 返回的月份列表
    String sRet = "";

    // 定义一些变量
    Date beginDate = null;
    Date endDate = null;

    GregorianCalendar beginGC = null;
    GregorianCalendar endGC = null;
    List<String> list = new ArrayList<String>();

    try {
    // 将字符串parse成日期
    beginDate = f.parse(beginDateStr);
    endDate = f.parse(endDateStr);

    // 设置日历
    beginGC = new GregorianCalendar();
    beginGC.setTime(beginDate);

    endGC = new GregorianCalendar();
    endGC.setTime(endDate);

    // 直到两个时间相同
    while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {
    sRet = beginGC.get(Calendar.YEAR) + "-"
    + (beginGC.get(Calendar.MONTH) + 1);
    list.add(sRet);
    // 以月为单位,增加时间
    beginGC.add(Calendar.MONTH, 1);
    }
    return list;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    /**
    * 解析两个日期段之间的所有日期
    * @param beginDateStr 开始日期 ,至少精确到yyyy-MM-dd
    * @param endDateStr 结束日期 ,至少精确到yyyy-MM-dd
    * @return yyyy-MM-dd日期集合
    */
    public static List<String> getDayListOfDate(String beginDateStr, String endDateStr) {
    // 指定要解析的时间格式
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");

    // 定义一些变量
    Date beginDate = null;
    Date endDate = null;

    Calendar beginGC = null;
    Calendar endGC = null;
    List<String> list = new ArrayList<String>();

    try {
    // 将字符串parse成日期
    beginDate = f.parse(beginDateStr);
    endDate = f.parse(endDateStr);

    // 设置日历
    beginGC = Calendar.getInstance();
    beginGC.setTime(beginDate);

    endGC = Calendar.getInstance();
    endGC.setTime(endDate);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    // 直到两个时间相同
    while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {

    list.add(sdf.format(beginGC.getTime()));
    // 以日为单位,增加时间
    beginGC.add(Calendar.DAY_OF_MONTH, 1);
    }
    return list;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    /**
    * 获取当下年份指定前后数量的年份集合
    * @param before 当下年份前年数
    * @param behind 当下年份后年数
    * @return 集合
    */
    public static List<Integer> getYearListOfYears(int before,int behind) {
    if (before<0 || behind<0) {
    return null;
    }
    List<Integer> list = new ArrayList<Integer>();
    Calendar c = null;
    c = Calendar.getInstance();
    c.setTime(new Date());
    int currYear = Calendar.getInstance().get(Calendar.YEAR);

    int startYear = currYear - before;
    int endYear = currYear + behind;
    for (int i = startYear; i < endYear; i++) {
    list.add(Integer.valueOf(i));
    }
    return list;
    }

    /**
    * 获取当前日期是一年中第几周
    * @param date
    * @return
    */
    public static Integer getWeekthOfYear(Date date) {
    Calendar c = new GregorianCalendar();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.setMinimalDaysInFirstWeek(7);
    c.setTime(date);

    return c.get(Calendar.WEEK_OF_YEAR);
    }

    /**
    * 获取某一年各星期的始终时间
    * 实例:getWeekList(2016),第52周(从2016-12-26至2017-01-01)
    * @param 年份
    * @return
    */
    public static HashMap<Integer,String> getWeekTimeOfYear(int year) {
    HashMap<Integer,String> map = new LinkedHashMap<Integer,String>();
    Calendar c = new GregorianCalendar();
    c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
    int count = getWeekthOfYear(c.getTime());

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String dayOfWeekStart = "";
    String dayOfWeekEnd = "";
    for (int i = 1; i <= count; i++) {
    dayOfWeekStart = sdf.format(getFirstDayOfWeek(year, i));
    dayOfWeekEnd = sdf.format(getLastDayOfWeek(year, i));
    map.put(Integer.valueOf(i), "第"+i+"周(从"+dayOfWeekStart + "至" + dayOfWeekEnd+")");
    }
    return map;

    }

    /**
    * 获取某一年的总周数
    * @param year
    * @return
    */
    public static Integer getWeekCountOfYear(int year){
    Calendar c = new GregorianCalendar();
    c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
    int count = getWeekthOfYear(c.getTime());
    return count;
    }

    /**
    * 获取指定日期所在周的第一天
    * @param date
    * @return
    */
    public static Date getFirstDayOfWeek(Date date) {
    Calendar c = new GregorianCalendar();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
    return c.getTime();
    }

    /**
    * 获取指定日期所在周的最后一天
    * @param date
    * @return
    */
    public static Date getLastDayOfWeek(Date date) {
    Calendar c = new GregorianCalendar();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
    return c.getTime();
    }

    /**
    * 获取某年某周的第一天
    * @param year 目标年份
    * @param week 目标周数
    * @return
    */
    public static Date getFirstDayOfWeek(int year, int week) {
    Calendar c = new GregorianCalendar();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, Calendar.JANUARY);
    c.set(Calendar.DATE, 1);

    Calendar cal = (GregorianCalendar) c.clone();
    cal.add(Calendar.DATE, week * 7);

    return getFirstDayOfWeek(cal.getTime());
    }

    /**
    * 获取某年某周的最后一天
    * @param year 目标年份
    * @param week 目标周数
    * @return
    */
    public static Date getLastDayOfWeek(int year, int week) {
    Calendar c = new GregorianCalendar();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, Calendar.JANUARY);
    c.set(Calendar.DATE, 1);

    Calendar cal = (GregorianCalendar) c.clone();
    cal.add(Calendar.DATE, week * 7);

    return getLastDayOfWeek(cal.getTime());
    }

    /**
    * 获取某年某月的第一天
    * @param year 目标年份
    * @param month 目标月份
    * @return
    */
    public static Date getFirstDayOfMonth(int year,int month){
    month = month-1;
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);

    int day = c.getActualMinimum(c.DAY_OF_MONTH);

    c.set(Calendar.DAY_OF_MONTH, day);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    return c.getTime();
    }

    /**
    * 获取某年某月的最后一天
    * @param year 目标年份
    * @param month 目标月份
    * @return
    */
    public static Date getLastDayOfMonth(int year,int month){
    month = month-1;
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    int day = c.getActualMaximum(c.DAY_OF_MONTH);
    c.set(Calendar.DAY_OF_MONTH, day);
    c.set(Calendar.HOUR_OF_DAY, 23);
    c.set(Calendar.MINUTE, 59);
    c.set(Calendar.SECOND, 59);
    c.set(Calendar.MILLISECOND, 999);
    return c.getTime();
    }

    /**
    * 获取某个日期为星期几
    * @param date
    * @return String "星期*"
    */
    public static String getDayWeekOfDate1(Date date) {
    String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
    if (w < 0)
    w = 0;

    return weekDays[w];
    }

    /**
    * 获得指定日期的星期几数
    * @param date
    * @return int
    */
    public static Integer getDayWeekOfDate2(Date date){
    Calendar aCalendar = Calendar.getInstance();
    aCalendar.setTime(date);
    int weekDay = aCalendar.get(Calendar.DAY_OF_WEEK);
    return weekDay;
    }

    /**
    * 验证字符串是否为日期
    * 验证格式:YYYYMMDD、YYYY_MM_DD、YYYYMMDDHHMISS、YYYYMMDD_HH_MI、YYYY_MM_DD_HH_MI、YYYYMMDDHHMISSSSS、YYYY_MM_DD_HH_MI_SS
    * @param strTime
    * @return null时返回false;true为日期,false不为日期
    */
    public static boolean validateIsDate(String strTime) {
    if (strTime == null || strTime.trim().length() <= 0)
    return false;

    Date date = null;
    List<String> list = new ArrayList<String>(0);

    list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
    list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISSSSS);
    list.add(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI);
    list.add(DATE_TIME_FORMAT_YYYYMMDD_HH_MI);
    list.add(DATE_TIME_FORMAT_YYYYMMDDHHMISS);
    list.add(DATE_FORMAT_YYYY_MM_DD);
    //list.add(DATE_FORMAT_YY_MM_DD);
    list.add(DATE_FORMAT_YYYYMMDD);
    //list.add(DATE_FORMAT_YYYY_MM);
    //list.add(DATE_FORMAT_YYYYMM);
    //list.add(DATE_FORMAT_YYYY);

    for (Iterator iter = list.iterator(); iter.hasNext();) {
    String format = (String) iter.next();
    if(strTime.indexOf("-")>0 && format.indexOf("-")<0)
    continue;
    if(strTime.indexOf("-")<0 && format.indexOf("-")>0)
    continue;
    if(strTime.length()>format.length())
    continue;
    date = parseStrToDate(strTime.trim(), format);
    if (date != null)
    break;
    }

    if (date != null) {
    System.out.println("生成的日期:"+DateUtil.parseDateToStr(date, DateUtil.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS, "--null--"));
    return true;
    }
    return false;
    }

    /**
    * 将指定日期的时分秒格式为零
    * @param date
    * @return
    */
    public static Date formatHhMmSsOfDate(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
    }

    /**
    * 获得指定时间加减参数后的日期(不计算则输入0)
    * @param date 指定日期
    * @param year 年数,可正可负
    * @param month 月数,可正可负
    * @param day 天数,可正可负
    * @param hour 小时数,可正可负
    * @param minute 分钟数,可正可负
    * @param second 秒数,可正可负
    * @param millisecond 毫秒数,可正可负
    * @return 计算后的日期
    */
    public static Date addDate(Date date,int year,int month,int day,int hour,int minute,int second,int millisecond){
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.add(Calendar.YEAR, year);//加减年数
    c.add(Calendar.MONTH, month);//加减月数
    c.add(Calendar.DATE, day);//加减天数
    c.add(Calendar.HOUR,hour);//加减小时数
    c.add(Calendar.MINUTE, minute);//加减分钟数
    c.add(Calendar.SECOND, second);//加减秒
    c.add(Calendar.MILLISECOND, millisecond);//加减毫秒数

    return c.getTime();
    }

    /**
    * 获得两个日期的时间戳之差
    * @param startDate
    * @param endDate
    * @return
    */
    public static Long getDistanceTimestamp(Date startDate,Date endDate){
    long daysBetween=(endDate.getTime()-startDate.getTime()+1000000)/(3600*24*1000);
    return daysBetween;
    }

    /**
    * 判断二个时间是否为同年同月
    * @param date1
    * @param date2
    * @return
    */
    public static Boolean compareIsSameMonth(Date date1,Date date2){
    boolean flag = false;
    int year1 = getYear(date1);
    int year2 = getYear(date2);
    if(year1 == year2){
    int month1 = getMonth(date1);
    int month2 = getMonth(date2);
    if(month1 == month2)flag = true;
    }
    return flag;
    }

    /**
    * 获得两个时间相差距离多少天多少小时多少分多少秒
    * @param str1 时间参数 1 格式:1990-01-01 12:00:00
    * @param str2 时间参数 2 格式:2009-01-01 12:00:00
    * @return long[] 返回值为:{天, 时, 分, 秒}
    */
    public static long[] getDistanceTime(Date one, Date two) {
    long day = 0;
    long hour = 0;
    long min = 0;
    long sec = 0;
    try {

    long time1 = one.getTime();
    long time2 = two.getTime();
    long diff ;
    if(time1<time2) {
    diff = time2 - time1;
    } else {
    diff = time1 - time2;
    }
    day = diff / (24 * 60 * 60 * 1000);
    hour = (diff / (60 * 60 * 1000) - day * 24);
    min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
    sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
    } catch (Exception e) {
    e.printStackTrace();
    }
    long[] times = {day, hour, min, sec};
    return times;
    }

    /**
    * 两个时间相差距离多少天多少小时多少分多少秒
    * @param str1 时间参数 1 格式:1990-01-01 12:00:00
    * @param str2 时间参数 2 格式:2009-01-01 12:00:00
    * @return String 返回值为:{天, 时, 分, 秒}
    */
    public static long[] getDistanceTime(String str1, String str2) {
    DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
    Date one;
    Date two;
    long day = 0;
    long hour = 0;
    long min = 0;
    long sec = 0;
    try {
    one = df.parse(str1);
    two = df.parse(str2);
    long time1 = one.getTime();
    long time2 = two.getTime();
    long diff ;
    if(time1<time2) {
    diff = time2 - time1;
    } else {
    diff = time1 - time2;
    }
    day = diff / (24 * 60 * 60 * 1000);
    hour = (diff / (60 * 60 * 1000) - day * 24);
    min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
    sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    long[] times = {day, hour, min, sec};
    return times;
    }

    /**
    * 两个时间之间相差距离多少天
    * @param one 时间参数 1:
    * @param two 时间参数 2:
    * @return 相差天数
    */
    public static Long getDistanceDays(String str1, String str2) throws Exception{
    DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS);
    Date one;
    Date two;
    long days=0;
    try {
    one = df.parse(str1);
    two = df.parse(str2);
    long time1 = one.getTime();
    long time2 = two.getTime();
    long diff ;
    if(time1<time2) {
    diff = time2 - time1;
    } else {
    diff = time1 - time2;
    }
    days = diff / (1000 * 60 * 60 * 24);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return days;
    }

    /**
    * 获取指定时间的那天 00:00:00.000 的时间
    * @param date
    * @return
    */
    public static Date getDayBeginTime(final Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    return c.getTime();
    }

    /**
    * 获取指定时间的那天 23:59:59.999 的时间
    * @param date
    * @return
    */
    public static Date getDayEndTime(final Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, 23);
    c.set(Calendar.MINUTE, 59);
    c.set(Calendar.SECOND, 59);
    c.set(Calendar.MILLISECOND, 999);
    return c.getTime();
    }


    public static void main(String [] args){
    try {
    DateUtil dateUtil = new DateUtil();
    System.out.println();

    } catch (Exception e) {
    // TODO: handle exception
    }

    }

    小白一枚,勤于整理,多多指教。


    转载链接:https://blog.csdn.net/w410589502/article/details/54342192

  • 相关阅读:
    ADO.NET访问Access2007的数据库 IErrorInfo.GetDescription failed with E_FAIL(0x80004005)
    Git工程实践
    来用java类模拟tensorflow工作流程
    Java异常处理之throw和声明throws·12
    Java异常之finally和多重捕获·11
    linux和windows如何查询自己本地出去的公网ip地址
    CentOS 6 EOL切换源
    P4782 【模板】2-SAT 问题
    P3834 【模板】可持久化线段树 2(主席树)
    P2671 [NOIP2015 普及组] 求和
  • 原文地址:https://www.cnblogs.com/peijyStudy/p/10515230.html
Copyright © 2011-2022 走看看