时间工具类DateUtil

该博客介绍了一个Java时间工具类DateUtil,包含对象转字符串、时间转时间戳、解析当前时间、字符串时间格式转换等方法。如objectToString可将对象转字符串,dateToTimestamp能把时间转成时间戳,convertDateStr2Appoint可进行字符串时间格式转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.mycode.util;

import java.io.IOException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Map.Entry;

import org.springframework.util.StringUtils;
/**

  • 时间工具类
  • @author lz

*/
public class DateUtil {

public static final String DATA_FORMAT_yyyy_MM_dd = "yyyy-MM-dd";
public static final String DATA_FORMAT_yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
public static final String DATA_FORMAT_yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
public static final String ISO_DATETIME_TIME_ZONE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
 
public static String DEFAULT_DATE_TIME = "yyyy-MM-dd HH:mm:ss";
public static String DEFAULT_DATE_TIME_PATH = "yyyy/MM/dd";   
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public static final String DATA_FORMAT_YYYY_MM_dd_HH_mm_ss_NNN = "yyyyMMddHHmmssSSS";    

public static final String DATA_FORMAT_AMERICAN = "MMM dd, yyyy hh:mm:ss a";
public static final String DATA_FORMAT_MMM_dd_yyyy_HH_mm_ss_aaa = "MMM dd,yyyy HH:mm:ss aaa";

public static final String DEFAULT_TIME_FORMAT_HM = "HH:mm";
public static final String DATE_FORMAT_FOR_LINUX = "yyyy.MM.dd-HH:mm:ss";
public static final long DAY_SECOND = 0x5265c00L;

public DateUtil() {
}

/**
 * Date 类型时间转换成字符串类型时间
 * @param dateValue
 * @param strFormat  格式化的样式
 * @return
 */
public static String dateToString(Date dateValue, String strFormat)
{
    return (new SimpleDateFormat(strFormat)).format(dateValue);
}

/**
 * 字符串类型时间转换成Date类型时间
 * @param strValue
 * @param strFormat
 * @return
 */
public static Date stringToDate(String strValue, String strFormat)
{
    Date date = null;
    try
    {
        date = (new SimpleDateFormat(strFormat)).parse(strValue);
    }
    catch(ParseException e) { }
    return date;
}

/**
* 对象重写toString(),如果是时间类型,则转换成字符串时间
* @param obj
* @param strFormat
* @return
/
public static String objectToString(Object obj, String strFormat)
{
String result = null;
if(obj != null){
if(obj instanceof Date){
result = dateToString((Date)obj, strFormat);
}else{
result = obj.toString();
}
}
return result;
}
/
*
* 时间转换成时间戳,默认格式yyyy-MM-dd HH:mm:ss
* @param date
* @return
/
public static Timestamp dateToTimestamp(Date date)
{
SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String time = df.format(date);
Timestamp ts = Timestamp.valueOf(time);
return ts;
}
/
*
* 时间转换成时间戳,指定格式
* @param date
* @return
*/
public static Timestamp dateToTimestamp(Date date, String format)
{
SimpleDateFormat df = new SimpleDateFormat(format);
String time = df.format(date);
Timestamp ts = Timestamp.valueOf(time);
return ts;
}

/**
 *  获取当前天数的开始时间 eg: 当前时间2019-6-22 13:23:00  
 *                           结果 2019-6-22 0:00:00
 * @return
 */
public static Date getTodayBegin()
{
    Calendar cal = Calendar.getInstance();
    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();
}

/**
 *  获取当前天数的结束时间 eg: 当前时间2019-6-22 13:23:00  
 *                           结果 2019-6-22 23:59:59
 * @return
 */
public static Date getTodayEnd()
{
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTime();
}
/**
 * 获取指定时间的零点时间 eg: 2019-6-22 0:00:00
 * @param date
 * @return
 */
public static Date getDayBegin(Date date)
{
    if(date == null)
    {
        return null;
    } else
    {
        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();
    }
}
/**
 * 获取指定时间的 当天的结束时间 eg: 2019-6-22 23:59:59
 * @param date
 * @return
 */
public static Date getDayEnd(Date date)
{
    if(date == null)
    {
        return null;
    } else
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        return cal.getTime();
    }
}

/**
 * 获取指定时间增加天数后的时间(Date 类型) eg:2019-6-22 23:59:59
                                 2019-6-27 15:28:17
 * 
 * @param date
 * @param plusDays  可以为负数
 * @return
 */
public static Date getAddDayDate(Date date, int plusDays)
{
    Calendar cal = Calendar.getInstance();
    if(date != null)
        cal.setTime(date);
    cal.add(Calendar.DATE, plusDays);
    return cal.getTime();
}

/**
 * 获取指定时间增加天数后的时间(DateStr 类型) eg:2019-6-22 23:59:59
                                                2019-6-27 15:28:17
 * @param date
 * @param plusDays    增加天数
 * @param dateFormat  格式化时间类型
 * @return
 */
public static String getAddDayDateFromToday(Date date, int plusDays, String dateFormat)
{
    return dateToString(getAddDayDate(date, plusDays), dateFormat);
}

/**
 * 指定时间增减小时数 
 * @param date
 * @param plusHours
 * @return
 */
public static Date getAddHourDate(Date date, int plusHours)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.HOUR, plusHours);
    return cal.getTime();
}
/**
 * 指定时间增减分钟数
 * @param date
 * @param plusMinutes
 * @return
 */
public static Date getAddMinuteDate(Date date, int plusMinutes)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MINUTE, plusMinutes);
    return cal.getTime();
}
/**
 * 指定时间增减秒数
 * @param date
 * @param plusMinutes
 * @return
 */
public static Date getAddSecondDate(Date date, int plusMinutes)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.SECOND, plusMinutes);
    return cal.getTime();
}

/**
 * 给指定时间增减月份
 * @param date
 * @param plusMonths
 * @return
 */
public static Date getAddMonthDate(Date date, int plusMonths)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MONTH, plusMonths);
    return cal.getTime();
}
/**
 * 给指定时间增减年份
 * @param date
 * @param plusMonths
 * @return
 */
public static Date getAddYearDate(Date date, int plusMonths)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.YEAR, plusMonths);
    return cal.getTime();
}

/**
 * 指定时间 中月份的第一天  2019-6-1 0:00:00
 * @param date
 * @return
 */
public static Date getMonthBeginTime(Date date)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.DATE, 1);
    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();
}

/**
 * 指定时间 中月份的最后一天 最后时间 2019-2-28 23:59:59
 * @param date
 * @return
 */
public static Date getMonthEndTime(Date date)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
    cal.set(Calendar.DATE, 1);

    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, -1);
    return cal.getTime();
}

/**
 * 某个时间一年的最后一刻   2025-12-31 23:59:59
 * @param date
 * @return
 */
public static Date getYearEndTime(Date date)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
    cal.set(Calendar.MONTH, 12);
    cal.set(Calendar.DATE, 1);
    
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, -1);
    return cal.getTime();
}
/**
 * 某个时间一年的开始时间     2019-1-1 0:00:00
 * @param date
 * @return
 */
public static Date getYearStartTime(Date date)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) - 1);
    cal.set(Calendar.MONTH, 12);
    cal.set(Calendar.DATE, 1);
    
    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();
}
/**
 * 获取指定年 的结束时间 eg: 2018-12-31 23:59:59
 * @param year
 * @return
 */
public static Date getYearEndTimeByYear(int year)
{
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.MONTH, 12);
    cal.set(Calendar.DATE, 1);
    
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, -1);
    return cal.getTime();
}

/**
 * 获取指定年 的开始时间 eg: 2018-1-1 0:00:00
 * @param year
 * @return
 */
public static Date getYearStartTimeByYear(int year)
{
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year - 1);
    cal.set(Calendar.MONTH, 12);
    cal.set(Calendar.DATE, 1);
    
    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();
}
/**
 * 时间拆分数组   eg:[2019, 6, 22, 17, 8]
 * @param date
 * @return
 */
public static int[] getTimeArray(Date date)
{
    if(date == null)
        date = new Date(System.currentTimeMillis());
    int timeArray[] = new int[5];
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    timeArray[0] = cal.get(Calendar.YEAR);
    timeArray[1] = cal.get(Calendar.MONTH) + 1;
    timeArray[2] = cal.get(Calendar.DATE);
    
    timeArray[3] = cal.get(Calendar.HOUR_OF_DAY);
    timeArray[4] = cal.get(Calendar.MINUTE);
    return timeArray;
}
/**
 * 获取指定年月日的时间
 * @param year
 * @param month
 * @param day
 * @return
 */
public static Date getDateByYMD(Integer year, Integer month, Integer day)
{
    Calendar cal = Calendar.getInstance();
    if(year != null)
        cal.set(Calendar.YEAR, year.intValue());
    if(month != null)
        cal.set(Calendar.MONTH, month.intValue() - 1);
    if(day != null)
        cal.set(Calendar.DATE, day.intValue());
    return cal.getTime();
}
/**
 * 获取两个时间之间相差的秒数
 * @param date1
 * @param date2
 * @return
 */
public static Long getSecondBetween(Date date1, Date date2)
{
    long m = date1.getTime();
    long n = date2.getTime();
    return (m - n) / 1000L;
}
/**
 * 指定两个时间相差的小时数
 * @param date1
 * @param date2
 * @return
 */
public static int getHourBetween(Date date1, Date date2)
{
    long m = date1.getTime();
    long n = date2.getTime();
    return (int)((m - n) /(1000*60*60));
}

/**
 * 指定两个时间相差天数
 * @param date1
 * @param date2
 * @return
 */
public static int getDayBetween(Date date1, Date date2)
{
    Calendar c1 = Calendar.getInstance();
    c1.setTime(date1);
    Calendar c2 = Calendar.getInstance();
    c2.setTime(date2);
    return (int)((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000*60*60*24));
}

/**
 * 计算两个时间相差的月份
 * @param date1
 * @param date2
 * @return
 */
public static int getMonthBetween(Date date1, Date date2)
{
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(date1);
    c2.setTime(date2);
    return (c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR)) * 12 + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH));
}
/**
 * 每周数字到中文映射
 * @param weekNum
 * @return
 */
public static String getCnWeekDesc(int weekNum)
{
    String strWeek = "";
    switch(weekNum)
    {
    case 1: // '\001' 星期一
        strWeek = "\u5468\u4E00";
        break;

    case 2: // '\002'  星期二
        strWeek = "\u5468\u4E8C";
        break;

    case 3: // '\003' 星期三
        strWeek = "\u5468\u4E09";
        break;

    case 4: // '\004' 星期四
        strWeek = "\u5468\u56DB";
        break;

    case 5: // '\005'  星期五
        strWeek = "\u5468\u4E94";
        break;

    case 6: // '\006'  星期六
        strWeek = "\u5468\u516D";
        break;

    case 7: // '\007'  星期天
        strWeek = "\u5468\u65E5";
        break;
    }
    return strWeek;
}
/**
 * 计算时间的早午,下午
 * @param date
 * @return
 */
public static String getCnAMPM(Date date)
{
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    if(0 == cal.get(Calendar.AM_PM))
        return "\u4E0A\u5348";  // 上午
    else
        return "\u4E0B\u5348";   //下午
}

/**
 * 判断某年份是否是闰年
 * @param year
 * @return
 */
public static boolean isLeapYear(int year)
{
    Calendar calendar = Calendar.getInstance();
    return ((GregorianCalendar)calendar).isLeapYear(year);
}

/**
 * 获取本周的开始时间   2019-6-17 0:00:00
 * @param date
 * @return
 */
public static Date getBeginDateofThisWeek(Date date)
{
    Calendar current = Calendar.getInstance();
    current.setTime(date);
    int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
    if(dayOfWeek == 1)
        current.add(Calendar.DATE, -6);
    else
        current.add(Calendar.DATE, 2 - dayOfWeek);
    
    current.set(Calendar.HOUR_OF_DAY, 0);
    current.set(Calendar.MINUTE, 0);
    current.set(Calendar.SECOND, 0);
    current.set(Calendar.MILLISECOND, 0);
    
    return current.getTime();
}

/**
 * 获取本周的结束时间  2019-6-23 23:59:59
 * @param date
 * @return
 */
public static Date getEndDateofThisWeek(Date date)
{
    Calendar current = Calendar.getInstance();
    current.setTime(date);
    int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
    if(dayOfWeek != 1)
        current.add(Calendar.DATE, 9 - dayOfWeek);
    else
        current.add(Calendar.DATE, 1);
    
    current.set(Calendar.HOUR_OF_DAY, 0);
    current.set(Calendar.MINUTE, 0);
    current.set(Calendar.SECOND, 0);
    current.set(Calendar.MILLISECOND, -1);
    return current.getTime();
}
/**
 * 获取指定时间向后一周七天的时间,以map 返回
 * @return
 */
public static Map<String,Date> getDateForWeekDay()
{
    Map<String,Date> weekDayDateMap = new HashMap<String,Date>();
    Calendar calendar = Calendar.getInstance();
    for(int i = 1; i <= 7; i++)
    {
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if(dayOfWeek == 0)
            dayOfWeek = 7;
        weekDayDateMap.put((new StringBuilder()).append(dayOfWeek).append("").toString(), calendar.getTime());
        calendar.add(Calendar.DATE, 1);
    }

    return weekDayDateMap;
}

/**
 * 获取指定时间是 所属周的那一天
 * @param date
 * @return
 */
public static int getDayOfWeek(Date date)
{
    if(date == null)
        date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int today = cal.get(Calendar.DAY_OF_WEEK);
    if(today == 1)
        return 7;
    else
        return today - 1;
}

/**
 * 获取指定时间是一年中的第几个周
 * @param date
 * @return
 */
public static int getWeekOfYear(Date date)
{
    if(date != null)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.WEEK_OF_YEAR);
    } else
    {
        return 0;
    }
}

/**
 * 获取指定时间的年数
 * @param date
 * @return
 */
public static int getYear(Date date)
{
    if(date != null)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    } else
    {
        return 0;
    }
}
/**
 *  获取指定时间的月份
 * @param date
 * @return
 */
public static int getMonthOfYear(Date date)
{
    if(date != null)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.MONTH);
    } else
    {
        return 0;
    }
}
/**
 * 获取指定时间 的小时数
 * @param date
 * @return
 */
public static int getHourOfDay(Date date)
{
    if(date != null)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.HOUR_OF_DAY);
    } else
    {
        return 0;
    }
}
/**
 * 清除时间, 置为当前时间的零点
 * @param date
 * @return
 */
public static Date clearTime(Date date)
{
    if(date != null)
    {
        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();
    } else
    {
        return null;
    }
}
/**
 * 两个时间比较  date1<date2 -1 ; 等于返回0;  大于返回1 
 * @param date1
 * @param date2
 * @return
 */
public static int compareTime(Date date1, Date date2)
{
    long intDate1 = date1.getTime();
    long intDate2 = date2.getTime();
    return intDate1 < intDate2 ? -1 : ((byte)(intDate1 != intDate2 ? 1 : 0));
}

/**
 * 获取昨天时间  eg: 当前时间 2019-6-22  结果: 2019-06-21
 * @return
 */
public static String getYesterday()
{
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1);
    String yesterday = (new SimpleDateFormat("yyyy-MM-dd")).format(cal.getTime());
    return yesterday;
}

/**
 * 获取当前时间对象 每个小时(整点)的时间 2019-06-22 00:00:00 ——2019-06-22 23:00:00 
 * @return
 */
public static List<Date> getDayHours()
{
    List<Date> dayHours = new ArrayList<Date>();
    Date todayBegin = getTodayBegin();
    for(int i = 1; i <= 24; i++)
        dayHours.add(getAddHourDate(todayBegin, i));

    return dayHours;
}
/**
 *  用指定的时分秒 time 替换当前时间的时分秒 eg: time=12:23:23  当前时间  2019-6-22 21:34:43
 *                                            结果:  2019-6-22 12:23:23
 * @param date
 * @param time
 * @return
 */
public static Date createDay(Date date, String time)
{
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    if(time.length() == 5)
        time = (new StringBuilder()).append(time).append(":00").toString();
    String intTime[] = time.split(":");
    
    cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(intTime[0]).intValue());
    cal.set(Calendar.MINUTE, Integer.valueOf(intTime[1]).intValue());
    cal.set(Calendar.SECOND, Integer.valueOf(intTime[2]).intValue());
    return cal.getTime();
}

/**
 *  计算当前时间经历的天数,小时,分钟 ,秒数 eg: 当前时间 2019-06-22 19:05:00
 *                                     结果:        18069天11小时13分钟8秒
 * @param second  秒数
 * @return
 */
public static String calculateTimeStr(Long second)
{
	//0x15180L  为一天时间所包含秒数的十六进制表示
    StringBuffer buffer = new StringBuffer();
    long days = second.longValue() / 0x15180L;
    if(0L != days)
        buffer.append((new StringBuilder()).append(days).append("\u5929").toString());
    long hours = (second.longValue() % 0x15180L) / 3600L;
    if(0L != hours)
        buffer.append((new StringBuilder()).append(hours).append("\u5C0F\u65F6").toString());
    long minutes = (second.longValue() % 3600L) / 60L;
    if(0L != minutes)
        buffer.append((new StringBuilder()).append(minutes).append("\u5206\u949F").toString());
    long seconds = second.longValue() % 60L;
    if(0L != seconds)
        buffer.append((new StringBuilder()).append(seconds).append("\u79D2").toString());
    if(second.longValue() < 1L)
        return "1\u79D2";
    else
        return buffer.toString();
}
/**
 * 获取一天24 小时 时间点集合
 * res: [1点, 2点, 3点, 4点, 5点, 6点, 7点, 8点, 9点, 10点, 
 * 11点, 12点, 13点, 14点, 15点, 16点, 17点, 18点, 19点, 20点, 21点, 22点, 23点, 24点]
 * @return
 */
public static List<String> getTodayHourByChina()
{
    List<String> list = new ArrayList<String>();
    for(int i = 1; i <= 24; i++)
        list.add((new StringBuilder()).append(i).append("\u70B9").toString());

    return list;
}
/**
 * 获取中文  31天数集合
 * res: [1号, 2号, 3号, 4号, 5号, 6号, 7号, 8号, 9号, 10号, 11号, 12号, 13号, 14号, 15号, 16号, 17号, 
 *      18号, 19号, 20号, 21号, 22号, 23号, 24号, 25号, 26号, 27号, 28号, 29号, 30号, 31号]
 * @return
 */
public static List<String> getTodayDayByChina()
{
    List<String> list = new ArrayList<String>();
    for(int i = 1; i <= 31; i++)
        list.add((new StringBuilder()).append(i).append("\u53F7").toString());

    return list;
}
/**
 * 获取月份中文集合
 * res: [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
 * @return
 */
public static List<String> getAllMonthByChina()
{
    List<String> list = new ArrayList<String>();
    for(int i = 1; i <= 12; i++)
        list.add((new StringBuilder()).append(i).append("\u6708").toString());

    return list;
}
/**
 * 比较开始时间(时间戳比较) ,结束时间是否符合规范, 正常则返回true,否则 false 
 * @param startTime
 * @param endTime
 * @param currentTime
 * @return
 */
public static boolean compareDate(Date startTime, Date endTime, Date currentTime)
{
    Long startMin = Long.valueOf(startTime.getTime());
    Long endMin = Long.valueOf(endTime.getTime());
    Long currentMin = Long.valueOf(currentTime.getTime());
    return startMin.longValue() <= currentMin.longValue() && currentMin.longValue() <= endMin.longValue();
}
/**
 * 时间转换成Integer  
 *  es: 20190622
 * @param date
 * @return
 */
public static int toInteger(Date date)
{
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    return c.get(Calendar.YEAR) * 10000 + (c.get(Calendar.MONTH) + 1) * 100 + c.get(Calendar.DATE);
}

/**
 * 比较开始时间(只比较年月日处) ,结束时间是否符合规范, 正常则返回true,否则 false
 * @param startTime
 * @param endTime
 * @param currentTime
 * @return
 */
public static boolean compareDateByYMD(Date startTime, Date endTime, Date currentTime)
{
    int start = toInteger(startTime);
    int end = toInteger(endTime);
    int current = toInteger(currentTime);
    return start <= current && current <= end;
}

/**
 * 比较时间 (年月日处) 大于 1, 小于-1 等于0 
 * @param time1
 * @param time2
 * @return
 */
public static int compareDateByYMD(Date time1, Date time2)
{
    int t1 = toInteger(time1);
    int t2 = toInteger(time2);
    if(t1 > t2)
        return 1;
    return t2 != t1 ? -1 : 0;
}

/**
 * 重置系统时间
 * @param date
 */
public static void resetSystemTime(Date date)
{
    try
    {
        String osName = System.getProperty("os.name");
        if(osName.matches("^(?i)Windows.*$"))
        {
            String cmd = (new StringBuilder()).append(" cmd /c date ").append(dateToString(date, "yyyy-MM-dd")).toString();
            Runtime.getRuntime().exec(cmd);
            cmd = (new StringBuilder()).append(" cmd /c time ").append(dateToString(date, "HH:mm:ss")).toString();
            Runtime.getRuntime().exec(cmd);
        } else
        {
            String time = dateToString(date, "yyyy.MM.dd-HH:mm:ss");
            String cmd = (new StringBuilder()).append(" date -s ").append(time).toString();
            Runtime.getRuntime().exec(cmd);
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}
/**
 * 用指定的时分秒时间替换 date Time 部分内容
 *  
 * @param date
 * @param hour
 * @param minute
 * @param second
 * @return
 */
public static Date setTimeOfDate(Date date, int hour, int minute, int second)
{
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    
    cal.set(Calendar.HOUR_OF_DAY, hour);
    cal.set(Calendar.MINUTE, minute);
    cal.set(Calendar.SECOND, second);
    return cal.getTime();
}

/**
 * 格式化日期对象, 格式内容为空的情况,默认以  yyyy-MM-dd格式
 * @param format
 * @param dt
 * @return
 */
public static String formatDate(String format, Date dt)
{
    if(dt == null)
        return "";
    if(StringUtils.isEmpty(format))
        format = "yyyy-MM-dd";
    SimpleDateFormat fmt = new SimpleDateFormat(format);
    return fmt.format(dt);
}

/**
* 以指定格式解析当前时间
* @param format
* @return
*/

public static String parseCurrentTimeToStr(String format)
{
    SimpleDateFormat simpleDate = new SimpleDateFormat(format);
    return simpleDate.format(Long.valueOf(System.currentTimeMillis()));
}

/**
* 字符串时间类型,从fromFormat 格式转换至 toFormat 格式
* @param dateValue
* @param fromFormat
* @param toFormat
* @return
*/
public static String convertDateStr2Appoint(String dateValue,String fromFormat,String toFormat){
if(null==dateValue||"".equals(dateValue)){
return “”;
}
Date date;
try{
date=new SimpleDateFormat(fromFormat).parse(dateValue);
return new SimpleDateFormat(toFormat).format(date);
}catch(ParseException e){
e.printStackTrace();
}
return null;
}
public static void main(String args[])
{

	Date date = new Date();       	
	int hourBetween = getHourBetween(getAddSecondDate(date,3600),date);
	System.out.println(hourBetween);
	
	int monthBetween = getMonthBetween(getAddYearDate(date,1),date);
	System.out.println(monthBetween);
	
	String cnWeekDesc = getCnWeekDesc(7);
	System.out.println(cnWeekDesc);
	
	String cnAMPM = getCnAMPM(date);
	System.out.println(cnAMPM);
	
	Date beginDateofThisWeek = getEndDateofThisWeek(date);
	System.out.println(beginDateofThisWeek.toLocaleString());
	
	Map<String, Date> dateForWeekDay = getDateForWeekDay();
	Set<Entry<String, Date>> entrySet = dateForWeekDay.entrySet();
	for (Entry<String, Date> entry : entrySet) {
		System.out.println(entry.getKey()+" "+entry.getValue().toLocaleString());
	}
	
	int dayOfWeek = getDayOfWeek(date);
	System.out.println(dayOfWeek);
	
	int weekOfYear = getWeekOfYear(date);
	System.out.println(weekOfYear);
	
	Date clearTime = clearTime(date);
	System.out.println(clearTime.toLocaleString());
    
	String yesterday = getYesterday();
	System.out.println(yesterday);
	
	List dayHours = getDayHours();
	System.out.println(dayHours);
	
	Date createDay = createDay(date, "12:23:23");
	System.out.println(createDay.toLocaleString());
	
	String calculateTimeStr = calculateTimeStr(date.getTime()/1000);
	System.out.println(calculateTimeStr);
	
	int integer = toInteger(date);
	System.out.println(integer);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值