DateUtilt
来源:互联网 发布:aphex twin 知乎 编辑:程序博客网 时间:2024/06/18 02:16
package com.base.utils;import org.apache.commons.lang.StringUtils;import org.joda.time.DateTime;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/** * 类DateUtil.java的实现描述:日期工具类 */public class DateUtil { public final static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; public final static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public final static String YYYY_MM_DD_HH = "yyyy-MM-dd HH"; public final static String YYYY_MM_DD = "yyyy-MM-dd"; public final static String YYYY_MM = "yyyy-MM"; public final static String YYYYMMDD = "yyyyMMdd"; public final static String YYYYMMDDHH = "yyyyMMddHH"; public final static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public final static String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS"; public final static String YYYYMMDDHHMM = "yyyyMMddHHmm"; public final static String MM_DD = "MM-dd"; /** * 判断传入的日期是否为同一天的日期 * * @param d1 * @param d2 * @return */ public static boolean isSameDay(Date d1, Date d2) { String dateString1 = dateToStr(d1, YYYYMMDD); String dateString2 = dateToStr(d2, YYYYMMDD); if (dateString1.equals(dateString2)) { return true; } return false; } /** * 通过制定的格式,将日期字符串解析为java.util.Date对象 * * @param dateStr 日期字符串 * @param formatStr 解析的格式 * @return 转换后的结果:Date对象 * @throws ParseException */ public static Date strToDate(String dateStr, String formatStr) { Date date = null; if (dateStr != null && !"".equals(dateStr)) { SimpleDateFormat sdf = new SimpleDateFormat(formatStr); try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 转换字符串(long型格式) 为java.util.Date对象 * * @param longStr * @return */ public static Date longStrToDate(String longStr) { Date date = null; if (StringUtils.isNotBlank(longStr) && StringUtils.isNumeric(longStr)) { try { date = new Date(Long.parseLong(longStr)); } catch (NumberFormatException e) { e.printStackTrace(); } } return date; } /** * 根据一个完整的日期,格式化成一个只到分钟的时间.yyyy-MM-dd HH:mm * * @param date * @param formatFormat * @return */ public static Date getMinuteDate(String date, String formatFormat) { Calendar cal = Calendar.getInstance(); cal.setTime(strToDate(date, formatFormat)); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 根据一个完整的日期,格式化成一个只到天的时间.yyyy-MM-dd * * @param date * @param formatFormat * @return */ public static Date getDayDate(String date, String formatFormat) { Calendar cal = Calendar.getInstance(); cal.setTime(strToDate(date, formatFormat)); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 通过制定的格式,将Date对象格式化为字符串 * * @param date 需要转换的Date对象 * @param formatStr 转换的格式 * @return 转换之后的字符串 */ public static String dateToStr(Date date, String formatStr) { String result = null; if (date != null) { SimpleDateFormat sdf = new SimpleDateFormat(formatStr); result = sdf.format(date); } return result; } /** * 将字符串,格式化. * * @param date * @param format * @return */ public static String parseDateStr(String date, String format) { if (StringUtils.isEmpty(date) || StringUtils.isEmpty(format)) { return null; } SimpleDateFormat f = new SimpleDateFormat(format); return f.format(strToDate(date, format)); } /** * 将一个字符串日期转换成另一个字符串日期. * * @param date 日期对象 * @param fromFormat 原来的日期格式 * @param toFormat 转换后的日期格式 * @return */ public static String parseDateStr(String date, String fromFormat, String toFormat) { return dateToStr(strToDate(date, fromFormat), toFormat); } // /** * 获取当前系统时间 * * @return */ public static Date getCurrDate() { return new Date(); } /** * 当前年份+99 * * @return */ public static Date getEffectiveDate() { DateTime dt = new DateTime(); DateTime minusMonths = dt.plusYears(70); return minusMonths.toDate(); } /** * 获取当前指定格式 的系统时间,可以改变分钟的数值 ,加或者减,例如:-1,10. * * @param formatStr 日期的格式化. * @param changeMinute 正数或者负数。 * @return */ public static String getCurrCustomMinuteDate(String formatStr, int changeMinute) { Calendar cal = new GregorianCalendar(); cal.setTime(getCurrDate()); cal.add(Calendar.MINUTE, changeMinute); return dateToStr(cal.getTime(), formatStr); } /** * 得到当前日期的 指定时间 * * @param hour * @param min * @param sec * @return */ public static Date getCurrDateFixTime(int hour, int min, int sec) { Calendar cal = new GregorianCalendar(); cal.setTime(getCurrDate()); cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.MINUTE, min); cal.set(Calendar.SECOND, sec); return cal.getTime(); } /** * 获取当前指定格式的系统时间 * * @param formatStr * @return */ public static String getCurrDate(String formatStr) { return dateToStr(getCurrDate(), formatStr); } /** * 获取指定日期的小时 如果date为nul则返回-1. * * @param date * @return */ public static int getHour(Date date) { if (date == null) { return -1; } Calendar cal = new GregorianCalendar(); cal.setTime(date); return cal.get(Calendar.HOUR_OF_DAY); } /** * 获取指定日期的天,如果date为null则返回-1; * * @param date * @return */ public static int getDay(Date date) { if (date == null) { return -1; } Calendar cal = new GregorianCalendar(); cal.setTime(date); return cal.get(Calendar.DAY_OF_MONTH); } /** * 获取当月最大的天数. * * @param date * @return */ public static int getMonthMaxDay(Date date) { if (date == null) { return -1; } Calendar cal = new GregorianCalendar(); cal.setTime(date); return cal.getActualMaximum(Calendar.DATE); } /** * 获取当前日期对应的上一个月的日期. * * @return */ public static Date getCurrUpMonthDate() { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.MONTH, -1); return c.getTime(); } /** * 获取当前日期对应的前n个月的日期. * * @param n * @return */ public static Date getCurrUpMonthDate(int n) { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.MONTH, -n); return c.getTime(); } /** * 获取指定日期的上一个月的日期 * * @return */ public static Date getUpMonthDate(String date, String dateFormat) { Calendar c = new GregorianCalendar(); c.setTime(strToDate(date, dateFormat)); c.add(Calendar.MONTH, -1); return c.getTime(); } /** * 获取当前日期对应的上一天的日期. * * @return */ public static Date getCurrUpDayDate() { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DATE, -1); return c.getTime(); } /** * 获取当前日期对应的下一天的日期. * * @return */ public static Date getCurrNextDayDate() { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DATE, 1); return c.getTime(); } /** * 获取当前日期对应的前n天的日期. * * @param n * @return */ public static Date getCurrUpDayDate(int n) { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DATE, -n); return c.getTime(); } /** * 获取当前日期对应的后n天的日期. * * @param n * @return */ public static Date getCurrNextDayDate(int n) { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DATE, n); return c.getTime(); } /** * 获取指定日期对应的后n天的日期. * @param n * @param date * @return */ public static Date getCurrNextDayDate(int n ,Date date) { Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.DATE, n); return c.getTime(); } /** * 获取当前日期对应的后n分钟的日期. * * @param n * @return */ public static Date getCurrNextMinuteDate(int n) { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.MINUTE, n); return c.getTime(); } /** * 获取指定日期的上一天的日期。 * * @param date * @param dateFormat * @return */ public static Date getUpDayDate(String date, String dateFormat) { Calendar c = new GregorianCalendar(); c.setTime(strToDate(date, dateFormat)); c.add(Calendar.DAY_OF_MONTH, -1); return c.getTime(); } /** * 获取指定日期的下一天的日期。 * * @param date * @param dateFormat * @return */ public static Date getNextDayDate(Date date, String dateFormat) { Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH, 1); return c.getTime(); } /** * 获取指定日期的上n周的日期。 * * @param n * @return */ public static Date getCurrUpWeekDate(int n) { Calendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH, -7 * n); return c.getTime(); } /** * 获取指定日期的上一周的日期。 * * @param date * @param dateFormat * @return */ public static Date getUpWeekDate(String date, String dateFormat) { Calendar c = new GregorianCalendar(); c.setTime(strToDate(date, dateFormat)); c.add(Calendar.DAY_OF_MONTH, -7); return c.getTime(); } /** * 计算指定日期加上后面2个日期之间的差值的日期,精确到秒 * * @param d1 指定日期 * @param d2 计算差值日期1 * @param d3 计算差值日期2 * @return */ public static Date addDateInterval(Date d1, Date d2, Date d3) { long d1LongValue = d1.getTime(); long d2LongValue = d2.getTime(); long d3LongValue = d3.getTime(); long lastDateValue = d1LongValue + Math.abs(d3LongValue - d2LongValue); Date newDate = new Date(lastDateValue); return newDate; } /** * 计算指定日期加上增量时间后的日期,精确到秒 * * @param date 待处理的日期 * @param addition 增加的毫秒数 * @return Date */ public static Date addDate(Date date, long addition) { long dateLongValue = date.getTime(); long lastDateValue = dateLongValue + addition; Date newDate = new Date(lastDateValue); return newDate; } /** * 检查传入日期是否在当前日期之前 * * @return boolean */ public static boolean isLate(Date date) { return getCurrDate().after(date); } /** * 获取两个日期的时间差(单位:毫秒) * * @param startDateStr * @param endDateStr * @return */ public static long getIntervalMilSeconds(String startDateStr, String endDateStr, String dateFormat) throws ParseException { SimpleDateFormat format = new SimpleDateFormat(dateFormat); Date startDate = format.parse(startDateStr); Date endDate = format.parse(endDateStr); return endDate.getTime() - startDate.getTime(); } /** * java.sql.Timestamp转换为java.util.Date * * @param time * @return */ public static Date timestampToDate(Timestamp time) { return new Date(time.getTime()); } /** * 获得当天是周几 1-7 * * @return */ public static int getCurrWeek() { Calendar calendar = Calendar.getInstance(); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; return dayOfWeek == 0 ? 7 : dayOfWeek; } /** * 获取指定日期的分钟 如果date为nul则返回-1. * * @param date * @return */ public static int getMinute(Date date) { if (date == null) { return -1; } Calendar cal = new GregorianCalendar(); cal.setTime(date); return cal.get(Calendar.MINUTE); } /** * 获取当前时间一个月的时间 * @return */ public static String getAMonthLater(){ DateTimeFormatter format1 = DateTimeFormat.forPattern("yyyy月MM日dd日 HH:mm:ss"); DateTime dt = new DateTime(); DateTime before1month = dt.plusMonths(1); return before1month.toString(format1); } /** * 获取当前扫码时间 * @return */ public static String getCurrentDate(){ DateTimeFormatter format1 = DateTimeFormat.forPattern("yyyy月MM日dd日 HH:mm:ss"); DateTime dt = new DateTime(); return dt.toString(format1); } public static void main(String[] args) { Date effectiveDate = DateUtil.getEffectiveDate(); System.out.println(effectiveDate.toLocaleString()); }}
阅读全文
0 0
- DateUtilt
- 【转】Matlab的各种数据读取、文件读写等操作汇总
- iOS基石——UITextField
- 【opencv】动态背景下运动目标检测 FAST+SURF+FLANN配准差分 17/12/13更新图片
- 使用TCP协议连续传输大量数据时,是否会丢包,应如何避免
- python入门系列9―——文件处理
- DateUtilt
- Android 中无法取消标题栏的问题,requestWindowFeature(Window.FEATURE_NO_TITLE);无效
- IntelliJ Idea 常用快捷键
- Android webview内存泄漏问题的解决
- ubuntu16使用命令
- VMware虚拟机克隆CentOS后网卡修改方法
- 如何避免面板弹出重叠
- 跨域资源共享 CORS 详解
- python入门系列11―——异常处理