java日期操作常见使用
来源:互联网 发布:六壬排盘软件 编辑:程序博客网 时间:2024/06/05 20:47
public class DateUtil { /** 时间日期格式化到年月日时分秒. */ public static String dateFormatYMDHMS = "yyyy-MM-dd HH:mm:ss"; /** 时间日期格式化到年月日. */ public static String dateFormatYMD = "yyyy-MM-dd"; /** 时间日期格式化到年月. */ public static String dateFormatYM = "yyyy-MM"; /** 时间日期格式化到年月日时分. */ public static String dateFormatYMDHM = "yyyy-MM-dd HH:mm"; /** 时间日期格式化到月日. */ public static String dateFormatMD = "MM/dd"; /** 时分秒. */ public static String dateFormatHMS = "HH:mm:ss"; /** 时分. */ public static String dateFormatHM = "HH:mm"; /** * 描述:String类型的日期时间转化为Date类型. * * @param strDate String形式的日期时间 * @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @return Date Date类型日期时间 */ public static Date getDateByFormat(String strDate, String format) { SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); Date date = null; try { date = mSimpleDateFormat.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 描述:获取偏移之后的Date. * @param date 日期时间 * @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时) * @param offset 偏移(值大于0,表示+,值小于0,表示-) * @return Date 偏移之后的日期时间 */ public Date getDateByOffset(Date date,int calendarField,int offset) { Calendar c = new GregorianCalendar(); try { c.setTime(date); c.add(calendarField, offset); } catch (Exception e) { e.printStackTrace(); } return c.getTime(); } /** * 描述:获取指定日期时间的字符串(可偏移). * * @param strDate String形式的日期时间 * @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时) * @param offset 偏移(值大于0,表示+,值小于0,表示-) * @return String String类型的日期时间 */ public static String getStringByOffset(String strDate, String format,int calendarField,int offset) { String mDateTime = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); c.setTime(mSimpleDateFormat.parse(strDate)); c.add(calendarField, offset); mDateTime = mSimpleDateFormat.format(c.getTime()); } catch (ParseException e) { e.printStackTrace(); } return mDateTime; } /** * 描述:Date类型转化为String类型(可偏移). * * @param date the date * @param format the format * @param calendarField the calendar field * @param offset the offset * @return String String类型日期时间 */ public static String getStringByOffset(Date date, String format,int calendarField,int offset) { String strDate = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); c.setTime(date); c.add(calendarField, offset); strDate = mSimpleDateFormat.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return strDate; } /** * 描述:Date类型转化为String类型. * * @param date the date * @param format the format * @return String String类型日期时间 */ public static String getStringByFormat(Date date, String format) { SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); String strDate = null; try { strDate = mSimpleDateFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return strDate; } /** * 描述:获取指定日期时间的字符串,用于导出想要的格式. * * @param strDate String形式的日期时间,必须为yyyy-MM-dd HH:mm:ss格式 * @param format 输出格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @return String 转换后的String类型的日期时间 */ public static String getStringByFormat(String strDate, String format) { String mDateTime = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(dateFormatYMDHMS); c.setTime(mSimpleDateFormat.parse(strDate)); SimpleDateFormat mSimpleDateFormat2 = new SimpleDateFormat(format); mDateTime = mSimpleDateFormat2.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return mDateTime; } /** * 描述:获取milliseconds表示的日期时间的字符串. * @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @return String 日期时间字符串 */ public static String getStringByFormat(long milliseconds,String format) { String thisDateTime = null; try { SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); thisDateTime = mSimpleDateFormat.format(milliseconds); } catch (Exception e) { e.printStackTrace(); } return thisDateTime; } /** * 描述:获取表示当前日期时间的字符串. * * @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @return String String类型的当前日期时间 */ public static String getCurrentDate(String format) { String curDateTime = null; try { SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); Calendar c = new GregorianCalendar(); curDateTime = mSimpleDateFormat.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return curDateTime; } /** * 描述:获取表示当前日期时间的字符串(可偏移). * * @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss" * @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时) * @param offset 偏移(值大于0,表示+,值小于0,表示-) * @return String String类型的日期时间 */ public static String getCurrentDateByOffset(String format,int calendarField,int offset) { String mDateTime = null; try { SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); Calendar c = new GregorianCalendar(); c.add(calendarField, offset); mDateTime = mSimpleDateFormat.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return mDateTime; } /** * 描述:计算两个日期所差的天数. * * @param date1 第一个时间的毫秒表示 * @param date2 第二个时间的毫秒表示 * @return int 所差的天数 */ public static int getOffectDay(long date1, long date2) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(date1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTimeInMillis(date2); //先判断是否同年 int y1 = calendar1.get(Calendar.YEAR); int y2 = calendar2.get(Calendar.YEAR); int d1 = calendar1.get(Calendar.DAY_OF_YEAR); int d2 = calendar2.get(Calendar.DAY_OF_YEAR); int maxDays = 0; int day = 0; if (y1 - y2 > 0) { maxDays = calendar2.getActualMaximum(Calendar.DAY_OF_YEAR); day = d1 - d2 + maxDays; } else if (y1 - y2 < 0) { maxDays = calendar1.getActualMaximum(Calendar.DAY_OF_YEAR); day = d1 - d2 - maxDays; } else { day = d1 - d2; } return day; } /** * 描述:计算两个日期所差的小时数. * * @param date1 第一个时间的毫秒表示 * @param date2 第二个时间的毫秒表示 * @return int 所差的小时数 */ public static int getOffectHour(long date1, long date2) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(date1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTimeInMillis(date2); int h1 = calendar1.get(Calendar.HOUR_OF_DAY); int h2 = calendar2.get(Calendar.HOUR_OF_DAY); int h = 0; int day = getOffectDay(date1, date2); h = h1-h2+day*24; return h; } /** * 描述:计算两个日期所差的分钟数. * * @param date1 第一个时间的毫秒表示 * @param date2 第二个时间的毫秒表示 * @return int 所差的分钟数 */ public static int getOffectMinutes(long date1, long date2) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(date1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTimeInMillis(date2); int m1 = calendar1.get(Calendar.MINUTE); int m2 = calendar2.get(Calendar.MINUTE); int h = getOffectHour(date1, date2); int m = 0; m = m1-m2+h*60; return m; } /** * 描述:获取本周一. * * @param format the format * @return String String类型日期时间 */ public static String getFirstDayOfWeek(String format) { return getDayOfWeek(format,Calendar.MONDAY); } /** * 描述:获取本周日. * * @param format the format * @return String String类型日期时间 */ public static String getLastDayOfWeek(String format) { return getDayOfWeek(format,Calendar.SUNDAY); } /** * 描述:获取本周的某一天. * * @param format the format * @param calendarField the calendar field * @return String String类型日期时间 */ private static String getDayOfWeek(String format,int calendarField) { String strDate = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); int week = c.get(Calendar.DAY_OF_WEEK); if (week == calendarField){ strDate = mSimpleDateFormat.format(c.getTime()); }else{ int offectDay = calendarField - week; if (calendarField == Calendar.SUNDAY) { offectDay = 7-Math.abs(offectDay); } c.add(Calendar.DATE, offectDay); strDate = mSimpleDateFormat.format(c.getTime()); } } catch (Exception e) { e.printStackTrace(); } return strDate; } /** * 描述:获取本月第一天. * * @param format the format * @return String String类型日期时间 */ public static String getFirstDayOfMonth(String format) { String strDate = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); //当前月的第一天 c.set(GregorianCalendar.DAY_OF_MONTH, 1); strDate = mSimpleDateFormat.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return strDate; } /** * 描述:获取本月最后一天. * * @param format the format * @return String String类型日期时间 */ public static String getLastDayOfMonth(String format) { String strDate = null; try { Calendar c = new GregorianCalendar(); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format); // 当前月的最后一天 c.set(Calendar.DATE, 1); c.roll(Calendar.DATE, -1); strDate = mSimpleDateFormat.format(c.getTime()); } catch (Exception e) { e.printStackTrace(); } return strDate; } /** * 描述:获取表示当前日期的0点时间毫秒数. * * @return the first time of day */ public static long getFirstTimeOfDay() { Date date = null; try { String currentDate = getCurrentDate(dateFormatYMD); date = getDateByFormat(currentDate+" 00:00:00",dateFormatYMDHMS); return date.getTime(); } catch (Exception e) { } return -1; } /** * 描述:获取表示当前日期24点时间毫秒数. * * @return the last time of day */ public static long getLastTimeOfDay() { Date date = null; try { String currentDate = getCurrentDate(dateFormatYMD); date = getDateByFormat(currentDate+" 24:00:00",dateFormatYMDHMS); return date.getTime(); } catch (Exception e) { } return -1; } /** * 描述:判断是否是闰年() * <p>(year能被4整除 并且 不能被100整除) 或者 year能被400整除,则该年为闰年. * * @param year 年代(如2012) * @return boolean 是否为闰年 */ public static boolean isLeapYear(int year) { if ((year % 4 == 0 && year % 400 != 0) || year % 400 == 0) { return true; } else { return false; } } /** * 描述:根据时间返回几天前或几分钟的描述. * * @param strDate the str date * @return the string */ public static String formatDateStr2Desc(String strDate,String outFormat) { DateFormat df = new SimpleDateFormat(dateFormatYMDHMS); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); try { c2.setTime(df.parse(strDate)); c1.setTime(new Date()); int d = getOffectDay(c1.getTimeInMillis(), c2.getTimeInMillis()); if(d==0){ int h = getOffectHour(c1.getTimeInMillis(), c2.getTimeInMillis()); if(h>0){ return h + "小时前"; }else if(h<0){ return Math.abs(h) + "小时后"; }else if(h==0){ int m = getOffectMinutes(c1.getTimeInMillis(), c2.getTimeInMillis()); if(m>0){ return m + "分钟前"; }else if(m<0){ return Math.abs(m) + "分钟后"; }else{ return "刚刚"; } } }else if(d>0){ if(d == 1){ return "昨天"; }else if(d==2){ return "前天"; } }else if(d<0){ if(d == -1){ return "明天"; }else if(d== -2){ return "后天"; } return Math.abs(d) + "天后"; } String out = getStringByFormat(strDate,outFormat); if(!StrUtil.isEmpty(out)){ return out; } } catch (Exception e) { } return strDate; } /** * 取指定日期为星期几 * @param strDate 指定日期 * @param inFormat 指定日期格式 * @return String 星期几 */ public static String getWeekNumber(String strDate,String inFormat) { String week = "星期日"; Calendar calendar = new GregorianCalendar(); DateFormat df = new SimpleDateFormat(inFormat); try { calendar.setTime(df.parse(strDate)); } catch (Exception e) { return "错误"; } int intTemp = calendar.get(Calendar.DAY_OF_WEEK) - 1; switch (intTemp){ case 0: week = "星期日"; break; case 1: week = "星期一"; break; case 2: week = "星期二"; break; case 3: week = "星期三"; break; case 4: week = "星期四"; break; case 5: week = "星期五"; break; case 6: week = "星期六"; break; } return week; } public static void main(String[] args) { System.out.println(formatDateStr2Desc("2017-11-9 15:38:31","MM月dd日 HH:mm")); }}
阅读全文
0 0
- java日期操作常见使用
- 常见公历日期操作
- Java 日期的几种常见操作工具类
- 【Java】java中常见的日期操作(取值、转换、加减、比较)
- 四、java常见日期函数
- java日期操作实例
- JAVA日期操作
- java操作日期集锦
- java中的日期操作
- Java中操作日期
- java 日期 操作
- java日期操作
- Java日期操作大全
- java日期操作大全
- java 日期时间操作
- JAVA 日期操作
- java日期操作
- java日期操作 大全
- redis详细入门
- dataframe实践
- 当你纠结某个问题很难解决的时候,很可能是你的设计出了问题
- ActiveMq--03
- 2017.11.06
- java日期操作常见使用
- 正则表达式_小记
- Oracle修改字段类型方法总结
- [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique
- javax.net.ssl.SSLException: Read error: ssl=0xdeae5100: I/O error during system call, Connection res
- 说说网站限时秒杀系统的架构设计
- CGLIB动态代理
- 关于Qt 静态成员函数调用信号
- 继承与多态