package com.chintrip.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; /** * * 日期处理工具类 * @author 58tc * */ public class DateTimeUtil { public static String FORMAT_DEFAULT_MIN = "yyyyMMddHHmmss"; public static String FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss"; public static String FORMAT_DEFAULT_CH = "yyyy年MM月dd日 HH时mm分ss秒"; public static String FORMAT_DEFAULT_YMD = "yyyy-MM-dd"; public static String FORMAT_DEFAULT_YM = "yyyy-MM"; public static String FORMAT_DEFAULT_HM = "yyyy-MM-dd HH:mm"; public static BiMap<String,String> planeMonth= HashBiMap.create();//双向map public static Map<String,String> sundayMap=new HashMap<String,String>(); static{ planeMonth.put("01", "JAN"); planeMonth.put("02", "FEB"); planeMonth.put("03", "MAR"); planeMonth.put("04", "APR"); planeMonth.put("05", "MAY"); planeMonth.put("06", "JUN"); planeMonth.put("07", "JUL"); planeMonth.put("08", "AUG"); planeMonth.put("09", "SEP"); planeMonth.put("10", "OCT"); planeMonth.put("11", "NOV"); planeMonth.put("12", "DEC"); } public static Date current(){ return new Date(); } public static String dateToStrOfDefaulfFormat(Date date) { return dateToStr(date, FORMAT_DEFAULT); } public static String dateToStrOfYMDFormat(Date date) { return dateToStr(date, FORMAT_DEFAULT_YMD); } public static String dateToStrOfYMDHMFormat(Date date) { return dateToStr(date, FORMAT_DEFAULT_HM); } public static Date strToDateOfDefaulfFormat(String dateStr) { if(dateStr==null || dateStr.equals("null") ){ return null; } return strToDate(dateStr, FORMAT_DEFAULT); } public static Date strToDateOfYMDFormat(String dateStr) { return strToDate(dateStr, FORMAT_DEFAULT_YMD); } public static Integer[] getYMDHMS(Date date){ Calendar cal = getCalendar(date); return new Integer[] {cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)}; } public static Integer getWeekOfMonth(Date date){ Calendar cal = getCalendar(date); return cal.get(Calendar.WEEK_OF_MONTH); } /** * 取本周周一的日期(周一为一周第一天) * @param date * @return */ public static Date thisWeekMonday(Date date){ Calendar cal = getCalendar(date); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return cal.getTime(); } /** * 返回星期数(周日返回7) * @param date * @return */ public static Integer getDayOfWeek(Date date){ Calendar cal = getCalendar(date); int re= cal.get(Calendar.DAY_OF_WEEK); if(re==0){ return 7; }else{ return re-1; } } public static Date addSecond(Date date, int num){ return add(date, Calendar.SECOND, num); } public static Date addMinute(Date date, int num){ return add(date, Calendar.MINUTE, num); } public static Date addHour(Date date, int num){ return add(date, Calendar.HOUR_OF_DAY, num); } public static Date addDay(Date date, int num){ return add(date, Calendar.DAY_OF_MONTH, num); } public static Date addWorkDay(Date src,int adddays){ Calendar cal = getCalendar(src); boolean holidayFlag = false; for (int i = 0; i < adddays; i++) { //把源日期加一天 cal.add(Calendar.DAY_OF_MONTH, 1); holidayFlag =checkHoliday(cal); if(holidayFlag) { i--; } } return cal.getTime(); } public static boolean checkHoliday(Calendar src){ boolean result = false; //先检查是否是周六周日(有些国家是周五周六) if (src.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY|| src.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { return true; } return result; } public static Date addMonth(Date date, int num){ return add(date, Calendar.MONTH, num); } public static Date add(Date date, int field, int num){ Calendar cal = getCalendar(date); cal.add(field, num); return cal.getTime(); } public static Date firstOfMonth(Date date){ Date d= first(date, Calendar.DAY_OF_MONTH); d=first(d); return d; } public static Date lastOfMonth(Date date){ Date d=last(date, Calendar.DAY_OF_MONTH); d=last(d); return d; } public static Date firstOfHour(Date date){ return first(date, Calendar.HOUR_OF_DAY); } public static Date first(Date date, int d){ if(null == date) return date; Calendar cal = getCalendar(date); cal.set(d, cal.getMinimum(d));//getActualMinimum return cal.getTime(); } public static Date first(Date date){ if(null == date) return date; Calendar cal = getCalendar(date); cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY)); cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND)); return cal.getTime(); } public static Date last(Date date, int d){ if(null == date) return date; Calendar cal = getCalendar(date); cal.set(d, cal.getActualMaximum(d)); return cal.getTime(); } public static Date last(Date date){ if(null == date) return date; Calendar cal = getCalendar(date); cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY)); cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND)); return cal.getTime(); } public static Calendar getCalendar(Date date){ Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(date); return cal; } /** * 日期转换为制定的字符串格式 * @param date * @param format * @return */ public static String dateToStr(Date date, String format){ if(null == date) return ""; SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } /** * 字符串转换为日期类型 * @param dateStr * @param format * @return */ public static Date strToDate(String dateStr, String format){ SimpleDateFormat sdf = new SimpleDateFormat(format); //sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); try { return sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 计算两日期间相差天数. * * * @param d1 * 开始日期 日期型 * @param d2 * 结束日期 日期型 * @return long 天数 */ public static long signDaysBetweenTowDate(Date d1, Date d2) { return (d2.getTime() - d1.getTime()) / (3600 * 24 * 1000); } public static long minuteBetweenTowDate(Date d1, Date d2) { return (d2.getTime() - d1.getTime()) / (60 * 1000); } public static String signSecondBetweenTowDate(Date d1, Date d2){ if(d1==null || d2==null){ return ""; } String resultDate=""; long l=d2.getTime()-d1.getTime(); long day=l/(24*60*60*1000); long hour=(l/(60*60*1000)-day*24); long min=((l/(60*1000))-day*24*60-hour*60); long s=(l/1000-day*24*60*60-hour*60*60-min*60); if(day>0){ resultDate+=day+"天"; } if(hour>0){ resultDate+=hour+"小时"; } if(min>0){ resultDate+=min+"分"; } resultDate+=s+"秒"; return resultDate; } public static int monthBetweenTowDate(Date date1, Date date2) { Calendar cal1 = getCalendar(date2); Calendar cal2 = getCalendar(date1); int c = (cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR)) * 12 + cal1.get(Calendar.MONTH) - cal2.get(Calendar.MONTH); return c; } /** * @param dateStr * 24DEC12格式日期 * @return */ public static Date getFromPlaneDate(String dateStr) { if(StringUtil.empty(dateStr)||dateStr.length()!=7){ return null; } String monstr=dateStr.substring(2, 5); String newmon=null; BiMap<String,String> bimap = planeMonth.inverse(); newmon=bimap.get(monstr); return strToDate(dateStr.substring(0, 2)+newmon+dateStr.substring(5),"ddMMyy"); } /** * @param dateStr * 30JUN格式日期 * @return */ public static String getFromPlaneDate1(String dateStr) { if(StringUtil.empty(dateStr)||dateStr.length()!=5){ return null; } String monstr=dateStr.substring(2,5); String newmon=null; BiMap<String,String> bimap = planeMonth.inverse(); newmon=bimap.get(monstr); return newmon+"-"+dateStr.substring(0,2); } /** * @param dateStr * yyyy-MM-dd格式日期 * @return * 30JUN2012 * */ public static String getPlaneDateFull(String dateStr) { String newmon = ""; String daystr = dateStr.substring(8, 10); String yearstr = dateStr.substring(2, 4); String monstr = dateStr.substring(5, 7); newmon=planeMonth.get(monstr); return daystr + newmon + yearstr; } /** * @param dateStr * yyyy-MM-dd格式日期 * @return * 30JUN * */ public static String getPlaneDateMin(String dateStr) { String newmon = ""; String daystr = dateStr.substring(8, 10); String monstr = dateStr.substring(5, 7); newmon=planeMonth.get(monstr); return daystr + newmon ; } public static void main(String[] args){ // System.out.println("::::" + dateToStr(new Date(), FORMAT_DEFAULT_MIN)); // System.out.println(strToDate("2012-11-01", FORMAT_DEFAULT_YMD).getTime()); // System.out.println("::::" + dateToStr(addDay(current(), -7), FORMAT_DEFAULT)); // System.out.println(addDay(new Date(),10)); // System.out.println("getFromPlaneDate:"+getFromPlaneDate("24DEC12").toLocaleString()); String aa="30JUN"; Date now=new Date(); Date d2=strToDate("2013-05-16 15:00:00", FORMAT_DEFAULT); System.out.println( firstOfMonth(now)); // System.out.println(getDayOfWeek(d1)); // System.out.println(thisWeekMonday(d1).toLocaleString()); } }
相关推荐
java中util.date和sql.date的类型转换问题.帮助大家很完善的了解关于java日期类型和数据库日期类型转换的问题,很值得拥有.
在这个项目中,我们关注的是"Date Util"和"String Util",它们是Java编程中非常重要的两个工具类。 Date Util主要涉及日期和时间的处理。在Java中,日期和时间的处理最初是通过`java.util.Date`和`java.text....
java_sql_Date与java_util_Date转换
本文将详细介绍如何将`java.util.Date`对象转换为`java.sql.Date`对象,这对于那些需要将日期值存储到数据库中的应用程序来说至关重要。 ### 标题:util包里的Date类转换为sql包里的Date #### 了解util包里的Date...
升级版DateUtil.java 得到几天后的date,根据农历生日计算出年龄,判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
### Java.util.Date到JSON日期转换详解 在Java中处理日期并将其转换为JSON格式是常见的需求,尤其是在进行网络传输或存储操作时。本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,...
JS日期工具类,方便大家的使用。后期会持续更新.......
### Java.util.Date与Java.sql.Date互转及字符串转换为日期时间格式 #### 一、Java.util.Date与Java.sql.Date的基本概念 在Java编程语言中,处理日期和时间时经常使用到`java.util.Date`和`java.sql.Date`这两个类...
包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、...4.Date转String dateToString(Date date, String format); 5.Timestamp转String timestampToString(Timestamp ts)..... 等等
### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...
`js-date-util` 是一个专为JavaScript设计的日期处理库,它提供了丰富的功能,帮助开发者在JavaScript环境中更方便地操作和格式化日期。这个库特别适用于那些需要在前端或者Node.js环境中进行复杂日期计算和格式化的...
`PKG_DATE_UTIL.zip_PKG DATE_pkg date_日期处理`这个压缩包提供了一个专门用于日期处理的工具,名为`PKG_DATE_UTIL`。下面将详细阐述这个工具的主要功能及其在实际应用中的价值。 首先,`PKG_DATE_UTIL`主要关注的...
Java.sql.Date与Java.util.Date的区别和转换 Java.util.Date和Java.sql.Date是Java中两种不同的日期和时间表示方式,虽然它们都是表示日期和时间,但是它们之间存在着一些重要的区别。 首先,Java.util.Date是Java...