日期工具类常用操作
来源:互联网 发布:zeppelin软件源地址 编辑:程序博客网 时间:2024/05/16 01:29
/**
* 通用格式标识 yyyy-MM-dd HH:mm
*/
public static final String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
/**
* 通用格式标识 yyyy-MM-dd HH:mm:ss
*/
public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
/**
* 通用格式标识 yyyy-MM-dd HH
*/
public static final String yyyy_MM_dd_HH = "yyyy-MM-dd HH";
/**
* 通用格式标识 yyyy/MM/dd
*/
public static final String yyyy__MM__dd = "yyyy/MM/dd";
/**
* 通用格式标识 yyyy/MM
*/
public static final String yyyy__MM = "yyyy/MM";
/**
* 通用格式标识 yyyy-MM-dd
*/
public static final String yyyy_MM_dd = "yyyy-MM-dd";
/**
* 通用格式标识yyyyMMdd
*/
public static final String yyyyMMdd = "yyyyMMdd";
/**
* 通用格式标识 HH:mm
*/
public static final String HH_mm = "HH:mm";
/**
* 通用格式标识 HHmm
*/
public static final String HHmm = "HHmm";
/**
* 通用格式标识 HHmmss
*/
public static final String HHmmss = "HHmmss";
/**
* 通用格式标识yyyyMMddHHmmss
*/
public static final String yyyyMMddHHmmss = "yyyyMMddHHmmss";
/**
* 通用格式标识ww
*/
public static final String ww = "ww";
/**
* 通用格式标识w
*/
public static final String w = "w";
/**
* 通用格式标识yyyy
*/
public static final String yyyy = "yyyy";
/**
* 通用格式标识 yyyy年MM月
*/
public static final String yyyy__MM__ = "yyyy年MM月";
public static final String yyyy__MM__dd__ = "yyyy年MM月dd日";
/**
* 通用格式标识 yyyy年MM月dd日 HH:mm
*/
public static final String yyyy_MM_ddHH_mm = "yyyy年MM月dd月 HH:mm";
/**
* 通用格式标识 yyyy.MM.dd HH:mm
*/
public static final String yyyy__MM_ddHH_mm = "yyyy.MM.dd HH:mm";
/**
* 通用格式标识 yyyy.MM.dd HH:mm
*/
public static final String yyyy__MM_dd = "yyyy.MM.dd";
/**
* 通用格式标识MM月dd月 HH:mm
*/
public static final String MM_ddHH_mm = "MM月dd月 HH:mm";
/**
* 通用格式标识yyyy年ww周
*/
public static final String yyyy__ww__ = "yyyy年ww周";
public static final int SECONDS_TO_MILLS_EQUATION = 1000;
/**
* 把日期格式化字符串
*
* @param date 要格式化的日期
* @param pattern 日期的格式
* @return 格式化后的字符串
*/
public static String format(Date date, String pattern) {
if (date == null) {
return StringUtils.EMPTY;
}
if (StringUtils.isBlank(pattern)) {
pattern = yyyy_MM_dd_HH_mm;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 把int类型日期格式化为字符串
*
* @param timeInt
* @param pattern
* @return
*/
public static String format(Integer timeInt, String pattern) {
if (timeInt <= 0) {
return StringUtils.EMPTY;
}//19941125
long time = timeInt * 1000l;
Date date = new Date(time);
return format(date, pattern);
}
/**
* 把日期字符串转换成日期对象
*
* @param dateStr 日期字符串
* @param pattern 格式串
* @return 转换后的日期
*/
public static Date parse(String dateStr, String pattern) {
if (StringUtils.isBlank(dateStr)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
/**
* 去掉时分秒,毫秒的写法
*
* @param date 日期
* @return 去掉时分秒,毫秒的方法
*/
public static Date shortDate(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();
}
public static Date shortDate(Long second) {
Date d = getDateFromSeconds(second);
return shortDate(d);
}
/**
* 计算出两个日期间所有的 [1..7]一星期中周几 的日期
*
* @param startTime 开始日期
* @param endTime 结束日期
* @param days 星期几的集合
* @return 日期从 周日开始算的 周日 1, 周一2, 周二3, 周三4, 周四5, 周五6, 周六7
*/
public static List<Date> getComposeDates(Date startTime, Date endTime, List<Integer> days) {
List<Date> list = new ArrayList<Date>();
try {
int i = 0;
Date initDate = startTime;
while (initDate.getTime() <= endTime.getTime()) {
DateFormat df = new SimpleDateFormat(yyyy_MM_dd);
Calendar c = Calendar.getInstance();
c.setTime(df.parse(df.format(initDate)));
Integer day = c.get(Calendar.DAY_OF_WEEK);
if (days.contains(day)) {
list.add(initDate);
}
initDate = getRelateDay(startTime, ++i);
}
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return list;
}
/**
* 计算日期中相对前几天或者后几天的日期
*
* @param initialTime 当前日期
* @param relateDay 往前几天 or 往后几天
* @return
*/
public static Date getRelateDay(Date initialTime, int relateDay) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.DATE, relateDay);
return cld.getTime();
}
/**
* 计算日期中,相对前几个小时或者后几个小时
*
* @param initialTime
* @param relateHour
* @return
*/
public static Date getRelateHour(Date initialTime, int relateHour) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.HOUR, relateHour);
return cld.getTime();
}
/**
* 计算日期中,相对前几分钟或者后几分钟
*
* @param initialTime
* @param relateMinute
* @return
*/
public static Date getRelateMinute(Date initialTime, int relateMinute) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.MINUTE, relateMinute);
return cld.getTime();
}
/**
* 获得根据旧的日期获得新的日期
*
* @param date 旧的日期
* @param field 变动的时间部分
* @param amount 变动量
* @return 新的时间
*/
public static Date add(Date date, int field, int amount) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
c.add(field, amount);
return c.getTime();
}
/**
* 获得天数
*
* @param date 日期
* @return 获得天数
*/
public static int date(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.DATE);
}
/**
* 获取当前日期是星期几<br>
*
* @param date
* @return 当前日期是星期几
*/
public static String getWeekOfDate(Date date) {
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance();
if (date != null) {
cal.setTime(date);
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 获得月份
*
* @param date 日期
* @return 获得天数
*/
public static int month(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.MONTH) + 1;// 月份从0开始
}
/**
* 获得年份
*
* @param date 日期
* @return 获得年份
*/
public static int year(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.YEAR);
}
/**
* 获得日期的最大天数
*
* @param date 日期
* @return 最大的天数
*/
public static int maxDate(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
c.add(Calendar.MONTH, 1);
c.set(Calendar.DATE, 1);
c.add(Calendar.DATE, -1);
return c.get(Calendar.DATE);
}
/**
* 将日期转换为同一天的最大值
*
* @param date
* @return
*/
public static Date getMaxDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 返回给定日期的月开始时间
*
* @param date
* @return
*/
public static Date getMonthStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
setDayOfStart(calendar);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 返回给定日期的月结束时间
*
* @param date
* @return
*/
public static Date getMonthEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
setDayOfEnd(calendar);
return calendar.getTime();
}
public static void setDayOfStart(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
}
public static void setDayOfEnd(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
}
public static Date getRelativeDate(Date date, String relateStr) {
int relate = 0;
try {
relate = Integer.parseInt(relateStr);
return getRelateDay(date, relate);
} catch (Exception e) {
Date result = null;
if (relateStr.endsWith("d")) {
relate = Integer.parseInt(relateStr.replaceAll("d", ""));
result = getRelateDay(date, relate);
} else if (relateStr.endsWith("h")) {
relate = Integer.parseInt(relateStr.replaceAll("h", ""));
result = getRelateHour(date, relate);
} else if (relateStr.endsWith("m")) {
relate = Integer.parseInt(relateStr.replaceAll("m", ""));
result = getRelateMinute(date, relate);
}
return result;
}
}
/**
* 时间转化对应格式的Date
*
* @param date
* @param pattern
* @return
*/
public static Date getFormatDate(Date date, String pattern) {
return parse(format(date, pattern), pattern);
}
/**
* 将日期转换为同一分的最小值
*
* @param date
* @return
*/
public static Date getMinSecondDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.SECOND, 00);
return calendar.getTime();
}
public static Date getDateTimeForTime(String timeStr) {
Calendar c = Calendar.getInstance();
String[] t = timeStr.split(":");
if (t.length < 3)
timeStr += ":00";
Time time = Time.valueOf(timeStr);
SimpleDateFormat format = new SimpleDateFormat("H");
Integer hours = Integer.valueOf(format.format(time));
format = new SimpleDateFormat("m");
Integer minutes = Integer.valueOf(format.format(time));
format = new SimpleDateFormat("s");
Integer seconds = Integer.valueOf(format.format(time));
c.set(Calendar.HOUR_OF_DAY, hours);
c.set(Calendar.MINUTE, minutes);
c.set(Calendar.SECOND, seconds);
return c.getTime();
}
public static String getCurrentTimeStamp() {
return new SimpleDateFormat(yyyyMMddHHmmss).format(new Date());
}
public static long getCurrentTimeSeconds() {
int equation = 1000;
return System.currentTimeMillis() / equation;
}
public static long getDateSeconds(Date date) {
int equation = 1000;
return date.getTime() / equation;
}
public static long getTimeDifference(long start, long end) {
return end - start;
}
public static String getTimeDifferenceStr(long start, long end) {
String totalProcessTime = null;
long between = getTimeDifference(start, end);
long day = between / (24 * 3600);
long hour = between % (24 * 3600) / 3600;
long minute = between % 3600 / 60;
// long second = between % 60;
if (day > 0) {
totalProcessTime = day + "天" + hour + "小时" + minute + "分";
} else if (hour > 0) {
totalProcessTime = hour + "小时" + minute + "分";
} else if (minute > 0) {
totalProcessTime = minute + "分";
} else {
totalProcessTime = "-";
}
return totalProcessTime;
}
/**
* Get the seconds of the calendar
*
* @param calendar 日期
* @return Long, return the seconds of the calendar
*/
public static Long getCalendarTimeSeconds(Calendar calendar) {
return calendar.getTimeInMillis() / SECONDS_TO_MILLS_EQUATION;
}
/**
* @param second
* @return Date
*/
public static Date getDateFromSeconds(long second) {
if (second == 0)
return null;
return new Date(second * SECONDS_TO_MILLS_EQUATION);
}
public static boolean dateEquals(Date date1, Date date2) {
Date d1 = parse(format(date1, yyyy_MM_dd), yyyy_MM_dd);
Date d2 = parse(format(date2, yyyy_MM_dd), yyyy_MM_dd);
return d1.compareTo(d2) == 0;
}
/**
* 根据生日计算年龄
*/
public static int getAgeByBirthday(Date birthday) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthday)) {
return 0;
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthday);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) + 1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
// monthNow==monthBirth
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
}
} else {
// monthNow>monthBirth
age--;
}
}
return age;
* 通用格式标识 yyyy-MM-dd HH:mm
*/
public static final String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
/**
* 通用格式标识 yyyy-MM-dd HH:mm:ss
*/
public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
/**
* 通用格式标识 yyyy-MM-dd HH
*/
public static final String yyyy_MM_dd_HH = "yyyy-MM-dd HH";
/**
* 通用格式标识 yyyy/MM/dd
*/
public static final String yyyy__MM__dd = "yyyy/MM/dd";
/**
* 通用格式标识 yyyy/MM
*/
public static final String yyyy__MM = "yyyy/MM";
/**
* 通用格式标识 yyyy-MM-dd
*/
public static final String yyyy_MM_dd = "yyyy-MM-dd";
/**
* 通用格式标识yyyyMMdd
*/
public static final String yyyyMMdd = "yyyyMMdd";
/**
* 通用格式标识 HH:mm
*/
public static final String HH_mm = "HH:mm";
/**
* 通用格式标识 HHmm
*/
public static final String HHmm = "HHmm";
/**
* 通用格式标识 HHmmss
*/
public static final String HHmmss = "HHmmss";
/**
* 通用格式标识yyyyMMddHHmmss
*/
public static final String yyyyMMddHHmmss = "yyyyMMddHHmmss";
/**
* 通用格式标识ww
*/
public static final String ww = "ww";
/**
* 通用格式标识w
*/
public static final String w = "w";
/**
* 通用格式标识yyyy
*/
public static final String yyyy = "yyyy";
/**
* 通用格式标识 yyyy年MM月
*/
public static final String yyyy__MM__ = "yyyy年MM月";
public static final String yyyy__MM__dd__ = "yyyy年MM月dd日";
/**
* 通用格式标识 yyyy年MM月dd日 HH:mm
*/
public static final String yyyy_MM_ddHH_mm = "yyyy年MM月dd月 HH:mm";
/**
* 通用格式标识 yyyy.MM.dd HH:mm
*/
public static final String yyyy__MM_ddHH_mm = "yyyy.MM.dd HH:mm";
/**
* 通用格式标识 yyyy.MM.dd HH:mm
*/
public static final String yyyy__MM_dd = "yyyy.MM.dd";
/**
* 通用格式标识MM月dd月 HH:mm
*/
public static final String MM_ddHH_mm = "MM月dd月 HH:mm";
/**
* 通用格式标识yyyy年ww周
*/
public static final String yyyy__ww__ = "yyyy年ww周";
public static final int SECONDS_TO_MILLS_EQUATION = 1000;
/**
* 把日期格式化字符串
*
* @param date 要格式化的日期
* @param pattern 日期的格式
* @return 格式化后的字符串
*/
public static String format(Date date, String pattern) {
if (date == null) {
return StringUtils.EMPTY;
}
if (StringUtils.isBlank(pattern)) {
pattern = yyyy_MM_dd_HH_mm;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 把int类型日期格式化为字符串
*
* @param timeInt
* @param pattern
* @return
*/
public static String format(Integer timeInt, String pattern) {
if (timeInt <= 0) {
return StringUtils.EMPTY;
}//19941125
long time = timeInt * 1000l;
Date date = new Date(time);
return format(date, pattern);
}
/**
* 把日期字符串转换成日期对象
*
* @param dateStr 日期字符串
* @param pattern 格式串
* @return 转换后的日期
*/
public static Date parse(String dateStr, String pattern) {
if (StringUtils.isBlank(dateStr)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
/**
* 去掉时分秒,毫秒的写法
*
* @param date 日期
* @return 去掉时分秒,毫秒的方法
*/
public static Date shortDate(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();
}
public static Date shortDate(Long second) {
Date d = getDateFromSeconds(second);
return shortDate(d);
}
/**
* 计算出两个日期间所有的 [1..7]一星期中周几 的日期
*
* @param startTime 开始日期
* @param endTime 结束日期
* @param days 星期几的集合
* @return 日期从 周日开始算的 周日 1, 周一2, 周二3, 周三4, 周四5, 周五6, 周六7
*/
public static List<Date> getComposeDates(Date startTime, Date endTime, List<Integer> days) {
List<Date> list = new ArrayList<Date>();
try {
int i = 0;
Date initDate = startTime;
while (initDate.getTime() <= endTime.getTime()) {
DateFormat df = new SimpleDateFormat(yyyy_MM_dd);
Calendar c = Calendar.getInstance();
c.setTime(df.parse(df.format(initDate)));
Integer day = c.get(Calendar.DAY_OF_WEEK);
if (days.contains(day)) {
list.add(initDate);
}
initDate = getRelateDay(startTime, ++i);
}
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return list;
}
/**
* 计算日期中相对前几天或者后几天的日期
*
* @param initialTime 当前日期
* @param relateDay 往前几天 or 往后几天
* @return
*/
public static Date getRelateDay(Date initialTime, int relateDay) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.DATE, relateDay);
return cld.getTime();
}
/**
* 计算日期中,相对前几个小时或者后几个小时
*
* @param initialTime
* @param relateHour
* @return
*/
public static Date getRelateHour(Date initialTime, int relateHour) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.HOUR, relateHour);
return cld.getTime();
}
/**
* 计算日期中,相对前几分钟或者后几分钟
*
* @param initialTime
* @param relateMinute
* @return
*/
public static Date getRelateMinute(Date initialTime, int relateMinute) {
Calendar cld = Calendar.getInstance();
cld.setTime(initialTime);
cld.add(Calendar.MINUTE, relateMinute);
return cld.getTime();
}
/**
* 获得根据旧的日期获得新的日期
*
* @param date 旧的日期
* @param field 变动的时间部分
* @param amount 变动量
* @return 新的时间
*/
public static Date add(Date date, int field, int amount) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
c.add(field, amount);
return c.getTime();
}
/**
* 获得天数
*
* @param date 日期
* @return 获得天数
*/
public static int date(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.DATE);
}
/**
* 获取当前日期是星期几<br>
*
* @param date
* @return 当前日期是星期几
*/
public static String getWeekOfDate(Date date) {
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance();
if (date != null) {
cal.setTime(date);
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 获得月份
*
* @param date 日期
* @return 获得天数
*/
public static int month(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.MONTH) + 1;// 月份从0开始
}
/**
* 获得年份
*
* @param date 日期
* @return 获得年份
*/
public static int year(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
return c.get(Calendar.YEAR);
}
/**
* 获得日期的最大天数
*
* @param date 日期
* @return 最大的天数
*/
public static int maxDate(Date date) {
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
c.add(Calendar.MONTH, 1);
c.set(Calendar.DATE, 1);
c.add(Calendar.DATE, -1);
return c.get(Calendar.DATE);
}
/**
* 将日期转换为同一天的最大值
*
* @param date
* @return
*/
public static Date getMaxDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 返回给定日期的月开始时间
*
* @param date
* @return
*/
public static Date getMonthStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
setDayOfStart(calendar);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 返回给定日期的月结束时间
*
* @param date
* @return
*/
public static Date getMonthEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
setDayOfEnd(calendar);
return calendar.getTime();
}
public static void setDayOfStart(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
}
public static void setDayOfEnd(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
}
public static Date getRelativeDate(Date date, String relateStr) {
int relate = 0;
try {
relate = Integer.parseInt(relateStr);
return getRelateDay(date, relate);
} catch (Exception e) {
Date result = null;
if (relateStr.endsWith("d")) {
relate = Integer.parseInt(relateStr.replaceAll("d", ""));
result = getRelateDay(date, relate);
} else if (relateStr.endsWith("h")) {
relate = Integer.parseInt(relateStr.replaceAll("h", ""));
result = getRelateHour(date, relate);
} else if (relateStr.endsWith("m")) {
relate = Integer.parseInt(relateStr.replaceAll("m", ""));
result = getRelateMinute(date, relate);
}
return result;
}
}
/**
* 时间转化对应格式的Date
*
* @param date
* @param pattern
* @return
*/
public static Date getFormatDate(Date date, String pattern) {
return parse(format(date, pattern), pattern);
}
/**
* 将日期转换为同一分的最小值
*
* @param date
* @return
*/
public static Date getMinSecondDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.SECOND, 00);
return calendar.getTime();
}
public static Date getDateTimeForTime(String timeStr) {
Calendar c = Calendar.getInstance();
String[] t = timeStr.split(":");
if (t.length < 3)
timeStr += ":00";
Time time = Time.valueOf(timeStr);
SimpleDateFormat format = new SimpleDateFormat("H");
Integer hours = Integer.valueOf(format.format(time));
format = new SimpleDateFormat("m");
Integer minutes = Integer.valueOf(format.format(time));
format = new SimpleDateFormat("s");
Integer seconds = Integer.valueOf(format.format(time));
c.set(Calendar.HOUR_OF_DAY, hours);
c.set(Calendar.MINUTE, minutes);
c.set(Calendar.SECOND, seconds);
return c.getTime();
}
public static String getCurrentTimeStamp() {
return new SimpleDateFormat(yyyyMMddHHmmss).format(new Date());
}
public static long getCurrentTimeSeconds() {
int equation = 1000;
return System.currentTimeMillis() / equation;
}
public static long getDateSeconds(Date date) {
int equation = 1000;
return date.getTime() / equation;
}
public static long getTimeDifference(long start, long end) {
return end - start;
}
public static String getTimeDifferenceStr(long start, long end) {
String totalProcessTime = null;
long between = getTimeDifference(start, end);
long day = between / (24 * 3600);
long hour = between % (24 * 3600) / 3600;
long minute = between % 3600 / 60;
// long second = between % 60;
if (day > 0) {
totalProcessTime = day + "天" + hour + "小时" + minute + "分";
} else if (hour > 0) {
totalProcessTime = hour + "小时" + minute + "分";
} else if (minute > 0) {
totalProcessTime = minute + "分";
} else {
totalProcessTime = "-";
}
return totalProcessTime;
}
/**
* Get the seconds of the calendar
*
* @param calendar 日期
* @return Long, return the seconds of the calendar
*/
public static Long getCalendarTimeSeconds(Calendar calendar) {
return calendar.getTimeInMillis() / SECONDS_TO_MILLS_EQUATION;
}
/**
* @param second
* @return Date
*/
public static Date getDateFromSeconds(long second) {
if (second == 0)
return null;
return new Date(second * SECONDS_TO_MILLS_EQUATION);
}
public static boolean dateEquals(Date date1, Date date2) {
Date d1 = parse(format(date1, yyyy_MM_dd), yyyy_MM_dd);
Date d2 = parse(format(date2, yyyy_MM_dd), yyyy_MM_dd);
return d1.compareTo(d2) == 0;
}
/**
* 根据生日计算年龄
*/
public static int getAgeByBirthday(Date birthday) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthday)) {
return 0;
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthday);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) + 1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
// monthNow==monthBirth
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
}
} else {
// monthNow>monthBirth
age--;
}
}
return age;
}
public static void main(String[]args) throws ParseException{
String strDate = "1994-11-25";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(strDate);
System.out.println(getAgeByBirthday(date));
}
阅读全文
0 0
- 日期工具类常用操作
- Android基础常用日期操作工具类
- Android基础常用日期操作工具类
- 常用日期工具类
- 常用日期工具类
- 日期操作工具类之 Calendar的常用方法封装
- 日期操作工具类
- 操作日期工具类
- 日期操作工具类
- 操作日期工具类
- 常用的日期时间操作工具
- 日期工具类常用方法
- java常用日期工具类
- Java日期操作工具类
- NSDate 日期操作工具类
- Deta日期操作工具类
- 操作日期时间工具类
- Java日期操作工具类
- BZOJ 2959: 长跑(LCT+并查集)
- [spring cloud学习4]综合使用spring cloud技术实现微服务
- SpringMVC获取url参数的方法
- mapreduce过程解析及任务调度问题
- Objective-C UITextField首行缩进的问题
- 日期工具类常用操作
- Spark读Lzo压缩格式的文件
- Azkaban进行job调度
- shell脚本日志统计笔记
- 微信小程序--百度地图坐标转换成腾讯地图坐标
- 如何注册Tomcat到Window Service服务
- MongoDB的数据库如何备份和恢复?
- Spring与策略模式
- oracle帮助文档——Real Application Testing User's Guide