Java常见日期格式及日期的计算工具类

论坛 期权论坛     
匿名小用户   2019-10-20 18:28   177   0
<!-- flowchart 箭头图标 勿删 -->
                    <svg style="display: none;">
                        <path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                    </svg>
                                            <p>package com.java.mvc.util;</p>

<p>import java.text.DateFormat; <br>
import java.text.ParseException; <br>
import java.text.SimpleDateFormat; <br>
import java.util.ArrayList; <br>
import java.util.Calendar; <br>
import java.util.Date; <br>
import java.util.GregorianCalendar; <br>
import java.util.List;</p>

<p>public class DateUtils {</p>

<pre class="blockcode"><code>public final static String FORMAT_YYYY_MM_DD = "yyyy-MM-dd";

public final static String FORMAT_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd hh:mm:ss";

public final static String FORMAT_YYYYMMDD = "yyyyMMdd";

public final static String FORMAT_YYYYMM = "yyyyMM";

public final static String FORMAT_YYYY = "yyyy";

public final static String FORMAT_YYYYMMDDHHMISS = "yyyyMMdd HH:mm:ss";

public final static String FORMAT_YYYYMMDDHHMMSS = "yyyyMMddHHmmss";

public final static String FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";

public final static String FORMAT_YYYY_MM_DD_HH_MI_SS_SSS = "yyyy-MM-dd HH:mm:ss:SSS";

public final static String FORMAT_YYYY_MM = "yyyy-MM";

public final static String FORMAT_DD_HH_MM_SS = "dd HH:mm:ss";

public final static String FORMAT_HH_MM_SS = "HH:mm:ss";

public static final int USE_YEAR = 1;

public static final int USE_MONTH = 2;

public static final int USE_DAY = 3;
/**
* 根据相应的格式初始化日期格式对象
* @param pattern
* @return
*/
public static DateFormat getDateFormat(final String pattern) {
    return new SimpleDateFormat(pattern);
}
/**
* 获取距离当前日期第N天的日期,若为days&gt;0则为当前日期后几天,否则为前几天
* @param days
* @return
*/
public static Date getPreviousOrNextDaysOfNow(int days) {
    return getPreviousOrNextDaysOfDate(new Date(), days);
}

/**
* 返回当前日期的 格式为: format(yyyy-MM-dd)
* @return
*/
public static String getCurrentDate() {
    Date now = new Date();
    return getDateFormat(FORMAT_YYYY_MM_DD).format(now);
}

/**
* 返回指定日期和指定格式日期字符串
* @return
*/
public static String getSpecifyDate(Date date,String pattern) {
    return getDateFormat(pattern).format(date);
}

/**
* 返回当前日期的 格式为: format(yyyy-MM-dd HH:MM:SS)
* @return
*/
public static String getCurrentDateTime() {
    Date now = new Date();
    return getDateFormat(FORMAT_YYYY_MM_DD_HH_MM_SS).format(now);
}

/**
* Current date with format(yyyy-MM-dd HH:MM:SS:SSS)
* @return
*/
public static String getCurrentDateTimeMilliSecond(Date date) {
    return getDateFormat(FORMAT_YYYY_MM_DD_HH_MI_SS_SSS).format(date);
}

/**
* 根据相应时间格式(yyyy-MM-dd HH:MM:SS:SSS)字符串转换为Date
* @return
*/
public static Date getDateByTimeMilliSecond(String date) throws ParseException{
    SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_YYYY_MM_DD_HH_MI_SS_SSS);
    return sdf.parse(date);
}

/**
* 根据相应时间格式字符串转换为Date
* @return
*/
public static Date getDateByPattern(String date,String pattern) throws ParseException{
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    return sdf.parse(date);
}

/**
* 获取当月的第一天
* @return
*/
public static Date getFirstDayOfThisMonth() {
    Calendar nowday = Calendar.getInstance();
    nowday.set(Calendar.DAY_OF_MONTH, 1);
    nowday.set(Calendar.HOUR_OF_DAY, 0);
    nowday.set(Calendar.MINUTE, 0);
    nowday.set(Calendar.SECOND, 0);
    nowday.set(Calendar.MILLISECOND, 0);
    return nowday.getTime();
}
/**
* 得到当前日期的上月日期
* @return
*/
public static Date getLastMonth() {
    Calendar nowday = Calendar.getInstance();
    nowday.setTime(new Date());
    nowday.set(Calendar.DAY_OF_MONTH, 1);
    nowday.add(Calendar.MONTH, -1);
    return nowday.getTime();
}


public static Date getLastDayByCalendar(Calendar calendar) {
    calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
    return calendar.getTime();
}



/**
* 判断指定日期是否在当前N天内
* @param old
* @param days
* @return
*/
public static boolean isDaysInterval(Date old, int days) {
    Calendar now = Calendar.getInstance();
    return (now.getTimeInMillis() - old.getTime()) &lt;= days * 24 * 3600 * 1000;
}
/**
* 根据日历获取相应月份的第一天
* @param calendar
* @return
*/
public static Date getFirstDayOfTheMonth(Calendar calendar) {
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTime();
}

/**
* 获取指定日期之前或者之后的日期
* @param days Day
* @return
*/
public static Date getPreviousOrNextDaysOfDate(Date date, int days) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DAY_OF_YEAR, days);
    return calendar.getTime();
}

/**
* 获取与指定日期相差月份数的相同日期
* @param date
* @param month
* @return
*/
public static Date getPreviousOrNextMonthsOfDate(Date date, int month) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH, month);
    return calendar.getTime();
}
/**
* 获
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:50
帖子:1079
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP