Files
Jarvis_java/src/main/java/cn/van/business/util/DateUtil.java
2024-12-02 10:10:57 +08:00

1055 lines
26 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cn.van.business.util;
import org.apache.commons.lang3.StringUtils;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 日期工具类
*
* @author jianglei
* @version 1.0.0 2013-8-3
* @since JDK 1.7
*/
public class DateUtil {
/**
* 最未来的时间
*/
public static final Date MOST_FUTURE_TIME = new Date(Long.MAX_VALUE);
/**
* 短日期格式
*/
public static final String SHORT_DATE_PATTERN = "yyyy-MM-dd";
/**
* 短日期格式
*/
public static final String SHORT_DATE_CHINESE_PATTERN = "yyyy年MM月dd日";
/**
* 时间格式
*/
public static final String TIME_PATTERN = "HH:mm:ss";
/**
* 长日期格式
*/
public static final String LONG_DATE_PATTERN = DateUtil.SHORT_DATE_PATTERN + StringsUtil.SPACE
+ DateUtil.TIME_PATTERN;
/**
* 没分隔符长日期格式
*/
public static final String LONG_DATE_NO_DELIMITER_PATTERN = "yyyyMMddHHmmss";
private static final long MS_ONE_SECOND = 1000;
private static final long MS_ONE_MINUTE = 60 * 1000;
private static final long MS_ONE_HOUR = 60 * DateUtil.MS_ONE_MINUTE;
private static final long MS_ONE_DAY = 24 * 60 * DateUtil.MS_ONE_MINUTE;
/**
* 最大的日期
*/
public static final String maxDateStr = "9999-12-31";
/**
* 最大的日期
*/
public static final String maxDateStr_ = "9999/12/31";
/**
* 年月日
*/
public static final String yyMMdd = "yyyy-MM-dd";
/**
* 年月日
*/
public static final String yyMMdd_ = "yyyy/MM/dd";
/**
* 年月日时分
*/
public static final String yyMMddHHmm = "yyyy-MM-dd HH:mm";
/**
* 年月日时分
*/
public static final String yyMMddHHmm_ = "yyyy/MM/dd HH:mm";
/**
* 年月日时分秒
*/
public static final String yyMMddHHmmss = "yyyy-MM-dd HH:mm:ss";
/**
* 年月日时分秒
*/
public static final String yyMMddHHmmss_ = "yyyy/MM/dd HH:mm:ss";
/**
* 年月日时分秒毫秒
*/
public static final String yyMMddHHmmssSSS = "yyyy-MM-dd HH:mm:ss.SSS";
/**
* 年月日时分秒毫秒
*/
public static final String yyMMddHHmmssSSS_ = "yyyy/MM/dd HH:mm:ss.SSS";
/**
* 年月日时分秒毫秒26位
*/
public static final String yyMMddHHmmssSSSSSS = "yyyy-MM-dd HH:mm:ss.SSSSSS";
/**
* 年月日时分秒毫秒26位
*/
public static final String yyMMddHHmmssSSSSSS_ = "yyyy/MM/dd HH:mm:ss.SSSSSS";
/**
* 年月日时分秒(用于加入文件名中)
*/
public static final String yyMMddHHmmss4fileName = "yyyyMMddHHmmss";
private DateUtil() {
}
/**
* 获取当前日期短日期格式yyyy-MM-dd
*
* @return 当前日期
*/
public static String getCurrentDate() {
return formatShort(new Date());
}
/**
* 获取当前时间长日期格式yyyy-MM-dd HH:mm:ss
*
* @return 当前时间
*/
public static String getCurrentTime() {
return formatLong(new Date());
}
/**
* 获取当前时间长日期格式yyyyMMddHHmmss
*
* @return 当前时间
*/
public static String getCurrentTimeNoDelimiter() {
return formatLongNoDelimiter(new Date());
}
/**
* 获取当前时间戳
*
* @return 当前时间戳
*/
public static Timestamp getCurrentTimestamp() {
return new Timestamp(Calendar.getInstance().getTimeInMillis());
}
/**
* 按照指定格式解析字符串型日期值为日期对象
*
* @param date
* 字符串型日期
* @param pattern
* 日期格式
* @return 日期对象
*/
public static Date parse(final String date, final String pattern) {
if (StringUtils.isEmpty(date)) {
return null;
}
final DateFormat formater = new SimpleDateFormat(pattern);
try {
return formater.parse(date);
} catch (final ParseException e) {
return null;
}
}
/**
* 按照指定格式解析字符串型日期值为日期对象
*
* @param date
* 字符串型日期
* @param pattern
* 日期格式
* @return 日期对象
*/
public static String parse(final Date date, final String pattern) {
if (date == null) {
return null;
}
final DateFormat formater = new SimpleDateFormat(pattern);
try {
return formater.format(date);
} catch (final Exception e) {
return null;
}
}
/**
* 按照指定格式格式化日期对象为字符串型日期
*
* @param date
* 日期对象
* @param pattern
* 日期格式
* @return 字符串型日期
*/
public static String format(final Date date, final String pattern) {
if (date == null) {
return null;
}
final DateFormat formater = new SimpleDateFormat(pattern);
return formater.format(date);
}
/**
* 按照短日期格式(yyyy-MM-dd)解析字符串型日期值为日期对象
*
* @param date
* 字符串型日期
* @return 日期对象
*/
public static Date parseShort(final String date) {
return parse(date, DateUtil.SHORT_DATE_PATTERN);
}
/**
* 按照短日期格式(yyyy-MM-dd)格式化日期对象为字符串型日期
*
* @param date
* 日期对象
* @return 字符串型日期
*/
public static String formatShort(final Date date) {
return format(date, DateUtil.SHORT_DATE_PATTERN);
}
/**
* 按照长日期格式(yyyy-MM-dd HH:mm:ss)解析字符串型日期值为日期对象
*
* @param date
* 字符串型日期
* @return 日期对象
*/
public static Date parseLong(final String date) {
return parse(date, DateUtil.LONG_DATE_PATTERN);
}
/**
* 按照长日期格式(yyyy-MM-dd HH:mm:ss)转换日期对象为字符串型日期
*
* @param date
* 日期对象
* @return 字符串型日期
*/
public static String formatLong(final Date date) {
return format(date, DateUtil.LONG_DATE_PATTERN);
}
/**
* 按照长日期格式(yyyyMMddHHmmss)转换日期对象为字符串型日期
*
* @param date
* 日期对象
* @return 字符串型日期
*/
public static String formatLongNoDelimiter(final Date date) {
return format(date, DateUtil.LONG_DATE_NO_DELIMITER_PATTERN);
}
/**
* 获取指定时间的日历对象
*
* @param date
* 时间
* @return 日历对象
*/
public static Calendar getCalendar(final Date date) {
if (date == null) {
return null;
}
final Calendar c = Calendar.getInstance();
c.setTime(date);
return c;
}
/**
* 计算指定两个时间之间的相差月份数。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 天数差
*/
public static int yearBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = Calendar.getInstance();
final Calendar laterCalendar = Calendar.getInstance();
earlierCalendar.setTime(earlierDate);
laterCalendar.setTime(laterDate);
return laterCalendar.get(Calendar.YEAR) - earlierCalendar.get(Calendar.YEAR);
}
/**
* 计算指定两个时间之间的相差月份数。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 天数差
*/
public static int monthsBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = Calendar.getInstance();
final Calendar laterCalendar = Calendar.getInstance();
earlierCalendar.setTime(earlierDate);
laterCalendar.setTime(laterDate);
final int months = (laterCalendar.get(Calendar.YEAR) - earlierCalendar.get(Calendar.YEAR)) * 12;
return months - earlierCalendar.get(Calendar.MONTH) + laterCalendar.get(Calendar.MONTH);
}
/**
* 计算指定两个时间之间的相差天数。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 天数差
*/
public static int daysBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = setTimeToCalendar(earlierDate, 0, 0, 0, 0);
final Calendar laterCalendar = setTimeToCalendar(laterDate, 0, 0, 0, 0);
final long dms = laterCalendar.getTimeInMillis() - earlierCalendar.getTimeInMillis();
return (int) (dms / DateUtil.MS_ONE_DAY);
}
/**
* 计算指定两个时间之间的相差小时之差。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 小时之差
*/
public static int hoursBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = setTimeToCalendar(earlierDate, -1, 0, 0, 0);
final Calendar laterCalendar = setTimeToCalendar(laterDate, -1, 0, 0, 0);
final long dms = laterCalendar.getTimeInMillis() - earlierCalendar.getTimeInMillis();
return (int) (dms / DateUtil.MS_ONE_HOUR);
}
/**
* 计算指定两个时间之间的相差分钟数。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 分钟差
*/
public static int minutesBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = setTimeToCalendar(earlierDate, -1, -1, 0, 0);
final Calendar laterCalendar = setTimeToCalendar(laterDate, -1, -1, 0, 0);
final long dms = laterCalendar.getTimeInMillis() - earlierCalendar.getTimeInMillis();
return (int) (dms / DateUtil.MS_ONE_MINUTE);
}
/**
* 计算指定两个时间之间的相差秒数。如果earlierDate晚于laterDate则返回负值
*
* @param earlierDate
* 较早时间
* @param laterDate
* 较晚时间
* @return 秒差
*/
public static long secondsBetween(final Date earlierDate, final Date laterDate) {
final Calendar earlierCalendar = setTimeToCalendar(earlierDate, -1, -1, -1, 0);
final Calendar laterCalendar = setTimeToCalendar(laterDate, -1, -1, -1, 0);
final long dms = laterCalendar.getTimeInMillis() - earlierCalendar.getTimeInMillis();
return dms / DateUtil.MS_ONE_SECOND;
}
/**
* 创建指定值的日期
*
* @param year
* 年
* @param month
* 月
* @param day
* 日
* @param hour
* 时
* @param minute
* 分
* @param second
* 秒
* @param millisecond
* 毫秒
* @return 日期
*/
public static Date createDate(final int year, final int month, final int day, final int hour, final int minute,
final int second, final int millisecond) {
final Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1); // 月份从0开始
c.set(Calendar.DATE, day);
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
c.set(Calendar.MILLISECOND, millisecond);
return c.getTime();
}
/**
* 获取指定日期加上指定年数后的日期值。若年数为负,则实际进行减操作
*
* @param date
* 原日期
* @param years
* 年数
* @return 计算后的新日期
*/
public static Date addYears(final Date date, final int years) {
if (years == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.YEAR, years);
return c.getTime();
}
/**
* 获取指定日期加上指定月数后的日期值。若月数为负,则实际进行减操作。
*
* @param date
* 原日期
* @param days
* 月数
* @return 计算后的新日期
*/
public static Date addMonths(final Date date, final int months) {
if (months == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.MONTH, months);
return c.getTime();
}
/**
* 获取指定日期加上指定天数后的日期值。若天数为负,则实际进行减操作。
*
* @param date
* 原日期
* @param days
* 天数
* @return 计算后的新日期
*/
public static Date addDays(final Date date, final Integer days) {
if (Util.isEmpty(days) || days == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.DATE, days);
return c.getTime();
}
/**
* 获取指定日期加上指定小时数后的日期值。若小时数为负,则实际进行减操作。
*
* @param date
* 原日期
* @param hours
* 小时数
* @return 计算后的新日期
*/
public static Date addHours(final Date date, final int hours) {
if (hours == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.HOUR_OF_DAY, hours);
return c.getTime();
}
/**
* 获取指定日期加上指定分钟数后的日期值。若分钟数为负,则实际进行减操作。
*
* @param date
* 原日期
* @param hours
* 分钟数
* @return 计算后的新日期
*/
public static Date addMinutes(final Date date, final int minutes) {
if (minutes == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.MINUTE, minutes);
return c.getTime();
}
/**
* 获取指定日期加上指定秒数后的日期值。若秒数为负,则实际进行减操作。
*
* @param date
* 原日期
* @param seconds
* 秒数
* @return 计算后的新日期
*/
public static Date addSeconds(final Date date, final int seconds) {
if (seconds == 0) {
return date;
}
final Calendar c = getCalendar(date);
c.add(Calendar.SECOND, seconds);
return c.getTime();
}
/**
* 为指定日期设置年月日,返回新日期
*
* @param date
* 原日期
* @param year
* 年
* @param month
* 月
* @param day
* 日
* @return 新日期
*/
public static Date setDate(final Date date, final int year, final int month, final int day) {
final Calendar c = getCalendar(date);
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1); // 月份从0开始
c.set(Calendar.DATE, day);
return c.getTime();
}
/**
* 为指定日期设置时分秒毫秒,返回新日期
*
* @param date
* 原日期
* @param hour
* 时
* @param minute
* 分
* @param second
* 秒
* @param millisecond
* 毫秒
* @return 新日期
*/
public static Date setTime(final Date date, final int hour, final int minute, final int second,
final int millisecond) {
final Calendar c = setTimeToCalendar(date, hour, minute, second, millisecond);
return c == null ? null : c.getTime();
}
private static Calendar setTimeToCalendar(final Date date, final int hour, final int minute, final int second,
final int millisecond) {
final Calendar c = getCalendar(date);
if (c == null) {
return null;
}
if (hour >= 0) {
c.set(Calendar.HOUR_OF_DAY, hour);
}
if (minute >= 0) {
c.set(Calendar.MINUTE, minute);
}
if (second >= 0) {
c.set(Calendar.SECOND, second);
}
if (millisecond >= 0) {
c.set(Calendar.MILLISECOND, millisecond);
}
return c;
}
/**
* 获取指定日期集合中最早的日期
*
* @param dates
* 日期集合
* @return 最早的日期
*/
public static Date earliest(final Date... dates) {
Date result = null;
for (final Date date : dates) {
if (result == null) {
result = date;
} else if (date.before(result)) {
result = date;
}
}
return result;
}
/**
* 获取指定日期集合中最晚的日期
*
* @param dates
* 日期集合
* @return 最晚的日期
*/
public static Date latest(final Date... dates) {
Date result = null;
for (final Date date : dates) {
if (result == null) {
result = date;
} else if (date.after(result)) {
result = date;
}
}
return result;
}
public static int getYear(final Date date) {
return getCalendar(date).get(Calendar.YEAR);
}
public static int getMonth(final Date date) {
return getCalendar(date).get(Calendar.MONTH) + 1; // 月份从0开始
}
public static int getDay(final Date date) {
return getCalendar(date).get(Calendar.DAY_OF_MONTH);
}
public static int getHour(final Date date) {
return getCalendar(date).get(Calendar.HOUR_OF_DAY);
}
public static int getMinute(final Date date) {
return getCalendar(date).get(Calendar.MINUTE);
}
public static int getSecond(final Date date) {
return getCalendar(date).get(Calendar.SECOND);
}
/**
* 判断指定日期是否周末
*
* @param date
* 日期
* @return 是否周末
*/
public static boolean isWeekend(final Date date) {
final int weekday = getCalendar(date).get(Calendar.DAY_OF_WEEK);
return weekday == Calendar.SUNDAY || weekday == Calendar.SATURDAY;
}
/**
* 字符串转换为日期
*
* @param times
* YYYY-MM-DD
* @return Date
* @throws ParseException
*/
public static final Date strToDate(String times) throws ParseException {
if (Util.isEmpty(times)) {
return new Date();
}
SimpleDateFormat sdf = new SimpleDateFormat(yyMMdd);
return sdf.parse(times);
}
/**
* 时间字符串转换为日期Date
*
* @param datetime
* @param pattern
* 默认"yyyy-MM-dd HH:mm"
* @return
*/
public static final Date strToDateTime(String datetime, String pattern) throws ParseException {
if (Util.isEmpty(datetime)) {
return new Date();
}
if (Util.isEmpty(pattern)) {
pattern = yyMMddHHmm;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.parse(datetime);
}
/**
* 字符串转换为时间戳
*
* @param times
* YYYY-MM-DD HH:mm:SS.ssssss
* @return Date
* @throws ParseException
*/
public static final Date strToTimeStamp(String times) throws ParseException {
if (Util.isEmpty(times)) {
return new Date();
}
String pattern = yyMMddHHmmssSSSSSS;
if (times.length() == 23) {
pattern = yyMMddHHmmssSSS;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.parse(times);
}
/**
* 将日期转换为指定格式的字符串 如果两个都传null得到当前日期的yyyy-MM-dd HH:mm:ss.SSS格式的字符串用于存于DB。
*
* @param date
* @param pattern
* 默认为 "yyyy-MM-dd HH:mm:ss.SSS"
* @return String
*/
public static final String dateToStr(Date date, String pattern) {
if (Util.isEmpty(date)) {
date = new Date();
}
if (Util.isEmpty(pattern)) {
pattern = yyMMddHHmmssSSS;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.US);
return sdf.format(date);
}
/**
* 获取当前时间的yyyy-MM-dd HH:mm:ss.SSS格式的字符串用于存于DB。
*
* @return
*/
public static final String getCurrentDBTimeString() {
return dateToStr(null, null);
}
/**
* 获取上个月第一天
*
* @return
*/
public static final Date getLastMonthFisrtDay() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 获取上个月最后一天
*
* @return
*/
public static final Date getLastMonthLastDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* 获取昨天的最后一秒
*
* @return
*/
public static final Date getLastDayLastSecond() {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23,
59, 59);
return calendar.getTime();
}
/**
* 获取某天的最后一秒
*
* @param date
* @return
*/
public static final Date getLastSecond(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23,
59, 59);
return calendar.getTime();
}
/**
* 获取当前月的天数
* @return
*/
public static int getDayOfMonth() {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
int day = calendar.getActualMaximum(Calendar.DATE);
return day;
}
/**
* 获取某天的凌晨零时零分零秒
*
* @param date
* @return
*/
public static final Date getBeginTime(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0,
0, 0);
return calendar.getTime();
}
/**
* 获取指定天数前某天的日期
*
* @param days
* @return
*/
public static final Date getLastTheDay(Date date, int days) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
return calendar.getTime();
}
/**
* 获取当前月份往前推指定数量的月份
*
* @param month
* @return
* yyyy-MM
*/
public static final String getBeforeMonth(int month) {
final Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, month);
return DateUtil.dateToStr(calendar.getTime(), "yyyy-MM");
}
/**
* 获取某年某月的最后一天
*
* @param month
* @return
* yyMMdd
*/
public static final String getLastDayByYearAndMonth(int year, int month) {
final Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return DateUtil.dateToStr(calendar.getTime(), DateUtil.yyMMdd);
}
public static void main(String[] args) {
int minutesBetween = minutesBetween(parse("1970-01-01 14:49:13", "yyyy-MM-dd HH:mm:ss"),
parse("1970-01-01 15:00:00", "yyyy-MM-dd HH:mm:ss"));
System.out.println(minutesBetween);
System.out.println(getCurrentTime());
}
/**
* 获取本月第一天
*
* @author buggy3
* @return
*/
public static final Date getFirstDayThisMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 比较两个日期大小:前者大于后者
*
* @param d1
* @param d2
* @return
*/
public static boolean compareAndGT(Date d1, Date d2) {
if (Util.isAnyEmpty(d1, d2)) {
return false;
}
return d1.getTime() > d2.getTime();
}
/**
* 比较两个日期大小:前者大于等于后者
*
* @param d1
* @param d2
* @return
*/
public static boolean compareAndGTE(Date d1, Date d2) {
if (Util.isAnyEmpty(d1, d2)) {
return false;
}
return d1.getTime() >= d2.getTime();
}
/**
* 比较两个日期大小:前者小于后者
*
* @param d1
* @param d2
* @return
*/
public static boolean compareAndLT(Date d1, Date d2) {
if (Util.isAnyEmpty(d1, d2)) {
return false;
}
return d1.getTime() < d2.getTime();
}
/**
* 比较两个日期大小:前者小于等于后者
*
* @param d1
* @param d2
* @return
*/
public static boolean compareAndLTE(Date d1, Date d2) {
if (Util.isAnyEmpty(d1, d2)) {
return false;
}
return d1.getTime() <= d2.getTime();
}
/**
* 获取当前时间到次日凌晨的秒数
*
* @return
*/
public static Long getSecondsNextEarlyMorning() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
}
/**
* 获取当前日期是星期几<br>
*
* @param dt
* @return 当前日期是星期几
*/
public static String getWeekOfDate(Date dt) {
return getWeekOfDate(dt, "");
}
/**
* 获取当前日期是星期几<br>
*
* @param dt
* @return 当前日期是星期几
*/
public static String getWeekOfDate(Date dt, String prefix) {
String[] weekDays = { "", "", "", "", "", "", "" };
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0) {
w = 0;
}
return prefix + weekDays[w];
}
/**
* 获取当年的开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Date getYearStartTime(Date date) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeInMillis(date.getTime());
calendar.add(Calendar.YEAR, 0);
calendar.add(Calendar.DATE, 0);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_YEAR, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return new Date(calendar.getTimeInMillis());
}
/**
* 获取当年的最后时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Date getYearEndTime(Date date) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeInMillis(date.getTime());
int year = calendar.get(Calendar.YEAR);
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
return new Date(calendar.getTimeInMillis());
}
/**
* 获取某月第一天
*
* @author buggy3
* @return
*/
public static final Date getFirstDayOfMonth(Integer year, Integer mon) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, mon - 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 获取某月最后一天
*
* @author buggy3
* @return
*/
public static final Date getLastDayOfMonth(Integer year, Integer mon) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, mon);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return calendar.getTime();
}
}