- 浏览: 21391 次
- 性别:
- 来自: 沈阳
最新评论
日期处理工具类
package com.jh.util; import java.sql.Timestamp; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; import java.util.UUID; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; /** * @author duhongming * */ public class DateUtil { public static final String PATTERN_DATE = "yyyy-MM-dd"; public static final String PATTERN_STANDARD = "yyyy-MM-dd HH:mm:ss"; public static final String PATTERN_SN_DATE = "yyyyMMdd"; public static String getTimestampStr() { Date date = new Date(); Long longTime = date.getTime(); return longTime.toString(); } public static String date2String(Date date, String pattern) { if (date == null) { throw new java.lang.IllegalArgumentException( "timestamp null illegal"); } if (pattern == null || pattern.equals("")) { pattern = PATTERN_STANDARD; ; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } public static Date string2Date(String strDate, String pattern) { if (strDate == null || strDate.equals("")) { throw new RuntimeException("str date null"); } if (pattern == null || pattern.equals("")) { pattern = DateUtil.PATTERN_DATE; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date = null; try { date = sdf.parse(strDate); } catch (ParseException e) { throw new RuntimeException(e); } return date; } public static Date getSomeDate(int i) { Calendar c = Calendar.getInstance(); c.add(Calendar.DATE, i); return c.getTime(); } public static String timestamp2String(Timestamp timestamp, String pattern) { if (timestamp == null) { throw new java.lang.IllegalArgumentException( "timestamp null illegal"); } if (pattern == null || pattern.equals("")) { pattern = PATTERN_STANDARD; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(new Date(timestamp.getTime())); } public static Timestamp currentTimestamp() { return new Timestamp(new Date().getTime()); } public static String currentTimestamp2String(String pattern) { return timestamp2String(currentTimestamp(), pattern); } public static Timestamp string2Timestamp(String strDateTime, String pattern) { if (strDateTime == null || strDateTime.equals("")) { throw new java.lang.IllegalArgumentException( "Date Time Null Illegal"); } if (pattern == null || pattern.equals("")) { pattern = PATTERN_STANDARD; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date = null; try { date = sdf.parse(strDateTime); } catch (ParseException e) { throw new RuntimeException(e); } return new Timestamp(date.getTime()); } public static String stringToYear(String strDest) { if (strDest == null || strDest.equals("")) { throw new java.lang.IllegalArgumentException("str dest null"); } Date date = string2Date(strDest, DateUtil.PATTERN_DATE); Calendar c = Calendar.getInstance(); c.setTime(date); return String.valueOf(c.get(Calendar.YEAR)); } public static String stringToMonth(String strDest) { if (strDest == null || strDest.equals("")) { throw new java.lang.IllegalArgumentException("str dest null"); } Date date = string2Date(strDest, DateUtil.PATTERN_DATE); Calendar c = Calendar.getInstance(); c.setTime(date); // return String.valueOf(c.get(Calendar.MONTH)); int month = c.get(Calendar.MONTH); month = month + 1; if (month < 10) { return "0" + month; } return String.valueOf(month); } public static String stringToDay(String strDest) { if (strDest == null || strDest.equals("")) { throw new java.lang.IllegalArgumentException("str dest null"); } Date date = string2Date(strDest, DateUtil.PATTERN_DATE); Calendar c = Calendar.getInstance(); c.setTime(date); // return String.valueOf(c.get(Calendar.DAY_OF_MONTH)); int day = c.get(Calendar.DAY_OF_MONTH); if (day < 10) { return "0" + day; } return "" + day; } public static Date getFirstDayOfMonth(Calendar c) { int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = 1; c.set(year, month, day, 0, 0, 0); return c.getTime(); } public static Date getLastDayOfMonth(Calendar c) { int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int day = 1; if (month > 11) { month = 0; year = year + 1; } c.set(year, month, day - 1, 0, 0, 0); return c.getTime(); } public static String date2GregorianCalendarString(Date date) { if (date == null) { throw new java.lang.IllegalArgumentException("Date is null"); } long tmp = date.getTime(); GregorianCalendar ca = new GregorianCalendar(); ca.setTimeInMillis(tmp); try { XMLGregorianCalendar t_XMLGregorianCalendar = DatatypeFactory .newInstance().newXMLGregorianCalendar(ca); return t_XMLGregorianCalendar.normalize().toString(); } catch (DatatypeConfigurationException e) { e.printStackTrace(); throw new java.lang.IllegalArgumentException("Date is null"); } } public static boolean compareDate(Date firstDate, Date secondDate) { if (firstDate == null || secondDate == null) { throw new java.lang.RuntimeException(); } String strFirstDate = date2String(firstDate, "yyyy-MM-dd"); String strSecondDate = date2String(secondDate, "yyyy-MM-dd"); if (strFirstDate.equals(strSecondDate)) { return true; } return false; } public static Date firstOfQuarter(Date date) { if (date == null) { throw new java.lang.RuntimeException(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); switch (calendar.get(Calendar.MONTH)) { case 0: case 1: case 2: calendar.set(Calendar.MONTH, 0); break; case 3: case 4: case 5: calendar.set(Calendar.MONTH, 3); break; case 6: case 7: case 8: calendar.set(Calendar.MONTH, 6); break; case 9: case 10: case 11: calendar.set(Calendar.MONTH, 9); break; } calendar.set(Calendar.DATE, 1); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { return df.parse(df.format(calendar.getTime())); } catch (ParseException e) { throw new java.lang.RuntimeException(); } } public static Date lastOfQuarter(Date date) { Date firstDate = firstOfQuarter(date); Calendar calendar = Calendar.getInstance(); calendar.setTime(firstDate); calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 3); return calendar.getTime(); } public static Date getLastDayOfMonth(Date date) { if (date == null) { throw new java.lang.RuntimeException(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DATE, 1); calendar.roll(Calendar.DATE, -1); return calendar.getTime(); } public static Date getDateAfterMonth(Date date, int amount) { if (date == null) { throw new java.lang.RuntimeException(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, amount); return calendar.getTime(); } /** * 用默认的格式字符串获得当前日期的字符串 * * @param date * 要格式化的Date. * @param formatString * 格式字符串. * @return 格式化好的日期字符串. */ public static String getToday() { return getDateStringByFormat(new Date(), PATTERN_DATE); } /** * 根据默认的格式字符串格式化Date * * @param date * 要格式化的Date. * @param formatString * 格式字符串. * @return 格式化好的日期字符串. */ public static String getDateStringByFormat(Date date) { return getDateStringByFormat(date, PATTERN_DATE); } /** * 根据指定的格式字符串格式化Date * * @param date * 要格式化的Date. * @param formatString * 格式字符串. * @return 格式化好的日期字符串. */ public static String getDateStringByFormat(Date date, String formatString) { SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); return dateFormat.format(date); } /** * 用默认的格式字符串和指定的Date字符串来取得Date * * @param dateString * Date字符串. * @return 格式化好的Date. */ public static Date getDateByFormat(String dateString) throws ParseException { return getDateByFormat(dateString, PATTERN_DATE); } /** * 根据指定的格式字符串和Date字符串来取得Date * * @param dateString * Date字符串. * @param formatString * 格式字符串. * @return 格式化好的Date. */ public static Date getDateByFormat(String dateString, String formatString) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat(formatString); return dateFormat.parse(dateString); } /** * 将数字格式化为符合流水号格式的字符串 * * @param num * 要格式化的数字. * @return 格式化好的字符串. */ public static String getSNFormat(int num) { NumberFormat nf = NumberFormat.getInstance(); // 设置是否使用分组 nf.setGroupingUsed(false); // 设置最大整数位数 nf.setMaximumIntegerDigits(3); // 设置最小整数位数 nf.setMinimumIntegerDigits(3); // 输出测试语句 return nf.format(num); } /** * 生一个32为的UUID,作为数据库的主键. * * @return UUID字符串. */ public static String getUUID() { UUID uuid = UUID.randomUUID(); return uuid.toString().replace("-", ""); } /** * 把日期字符串转换为符合数据库存储格式的Date * * @param dateString * 日期字符串. * @return Date. */ public static java.sql.Date getSQLDate(String dateString) { return java.sql.Date.valueOf(dateString); } /** * 将数据库中得到的timestamp格式化为YYYY-MM-DD hh:mm:ss形式 * * @param timestamp * Timestamp值 * @return 格式化好的timestamp. * @throws ParseException */ public static String getFormatTimestamp(Timestamp ts) throws ParseException { return getDateStringByFormat(ts, PATTERN_STANDARD); } public static void main(String[] args) { // System.out.println(stringToYear("2007-12-10")); // System.out.println(stringToMonth("2007-1-10")); // System.out.println(stringToDay("2007-12-10")); // System.out.println(string2Date("2007-09-11",TangCEDateUtil.PATTERN_DATE)); // Calendar c = Calendar.getInstance(); // System.out.println(c.(Calendar.DAY_OF_MONTH)); // System.out.println(c.getMaximum(Calendar.DAY_OF_MONTH)); // System.out.println(getFirstDayOfMonth(c)); // System.out.println(getLastDayOfMonth(c)); // String pattern = // String tmp = System.getProperty("file.separator"); // String pattern = "yyyy" + tmp + "MM" + tmp + "dd"; // System.out.println(DateUtil.date2String(new java.util.Date(), // pattern)); // System.out.println(date2GregorianCalendarString(new Date()));; // System.out.println(DateUtil.date2String(new java.util.Date(), "hh")); // System.out.println(DateUtil.date2String(new Date(), "ss")); System.out.println(date2String(new Date(), "yyyy/MM/dd/")); System.out.println(date2GregorianCalendarString(new Date())); } /** * 英文简写(默认)如:2010-12-01 */ public static String FORMAT_SHORT = "yyyy-MM-dd"; /** * 英文全称 如:2010-12-01 23:15:06 */ public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss"; /** * 精确到毫秒的完整时间 如:yyyy-MM-dd HH:mm:ss.S */ public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S"; /** * 英文全称 如:20130728111506 */ public static String FORMAT_EASY = "yyyyMMddHHmmss"; public static String FORMAT_EASY_E = "yyMMdd"; /** * 汉字加年月 */ public static String FORMAT_CHINA = "yyyy年MM月dd日"; /** * 获得默认的 date pattern */ public static String getDatePattern() { return FORMAT_LONG; } /** * 根据预设格式返回当前日期 * * @return */ public static String getNow() { return format(new Date()); } /** * 根据用户格式返回当前日期 * * @param format * @return */ public static String getNow(String format) { return format(new Date(), format); } /** * 使用预设格式格式化日期 * * @param date * @return */ public static String format(Date date) { return format(date, getDatePattern()); } /** * 使用用户格式格式化日期 * * @param date * 日期 * @param pattern * 日期格式 * @return */ public static String format(Date date, String pattern) { String returnValue = ""; if (date != null) { SimpleDateFormat df = new SimpleDateFormat(pattern); returnValue = df.format(date); } return (returnValue); } /** * 使用预设格式提取字符串日期 * * @param strDate * 日期字符串 * @return */ public static Date parse(String strDate) { return parse(strDate, getDatePattern()); } /** * 使用用户格式提取字符串日期 * * @param strDate * 日期字符串 * @param pattern * 日期格式 * @return */ public static Date parse(String strDate, String pattern) { SimpleDateFormat df = new SimpleDateFormat(pattern); try { return df.parse(strDate); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 计算当月的天数 * * @return */ public static int getCurrentMonthLastDay(Date date) { Calendar a = Calendar.getInstance(); a.setTime(date); a.set(Calendar.DATE, 1);// 把日期设置为当月第一天 a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天 int maxDate = a.get(Calendar.DATE); return maxDate; } /** * 在日期上增加数个整月 * * @param date * 日期 * @param n * 要增加的月数 * @return */ public static Date addMonth(Date date, int n) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, n); return cal.getTime(); } /** * 在日期上增加天数 * * @param date * 日期 * @param n * 要增加的天数 * @return */ public static Date addDay(Date date, int n) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, n); return cal.getTime(); } /** * 获取时间戳 */ public static String getTimeString() { SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL); Calendar calendar = Calendar.getInstance(); return df.format(calendar.getTime()); } /** * 获取日期年份 * * @param date * 日期 * @return */ public static String getYear(Date date) { return format(date).substring(0, 4); } /** * 按默认格式的字符串距离今天的天数 * * @param date * 日期字符串 * @return */ public static int countDays(String date) { long t = Calendar.getInstance().getTime().getTime(); Calendar c = Calendar.getInstance(); c.setTime(parse(date)); long t1 = c.getTime().getTime(); return (int) (t / 1000 - t1 / 1000) / 3600 / 24; } /** * 按默认格式的字符串距离今天的差几个月 * * @param date * @return */ public static int countMonth(String date) { // 把当前日期换成当月的一号 Calendar t = Calendar.getInstance(); t.set(Calendar.DATE, 1); t.set(Calendar.HOUR_OF_DAY, 0); t.set(Calendar.MINUTE, 0); t.set(Calendar.SECOND, 0); long t2 = t.getTime().getTime(); Calendar c = Calendar.getInstance(); c.setTime(parse(date)); c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); long t1 = c.getTime().getTime(); return (int) (t2 / 1000 - t1 / 1000) / 3600 / 24 / 30; } /** * 按用户格式字符串距离今天的天数 * * @param date * 日期字符串 * @param format * 日期格式 * @return */ public static int countDays(String date, String format) { long t = Calendar.getInstance().getTime().getTime(); Calendar c = Calendar.getInstance(); c.setTime(parse(date, format)); long t1 = c.getTime().getTime(); return (int) (t / 1000 - t1 / 1000) / 3600 / 24; } /** * 计算小时差 * * @param date1 * @param date2 * @return * @throws Exception */ public static double jisuan(String date1, String date2) throws Exception { java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat( "yyyy-MM-dd HH:mm"); java.util.Date start = sdf.parse(date1); java.util.Date end = sdf.parse(date2); long cha = end.getTime() - start.getTime(); double result = cha * 1.0 / (1000 * 60 * 60); return result; } /** * 日期向后,前推n年,n月,n天,n时,n分,n秒 * * @param date * : 需要处理的日期 * @param num * : 处理的数量,+为向后退,-为向前推 * @param type * : 类型:年-Y,月-M,日-D,时-H,分-MIN,秒-S * @return */ public static Date addDate(Date date, int num, String type) { try { Calendar calendar = new GregorianCalendar(); calendar.setTime(date); if (type.equals("Y")) { calendar.add(Calendar.YEAR, num);// 把日期往后增加n年.整数往后推,负数往前移动 } else if (type.equals("M")) { calendar.add(Calendar.MONTH, num);// 把日期往后增加n月.整数往后推,负数往前移动 } else if (type.equals("D")) { calendar.add(Calendar.DATE, num);// 把日期往后增加n天.整数往后推,负数往前移动 } else if (type.equals("H")) { calendar.add(Calendar.HOUR, num);// 把日期往后增加n小时.整数往后推,负数往前移动 } else if (type.equals("MIN")) { calendar.add(Calendar.MINUTE, num);// 把日期往后增加n分.整数往后推,负数往前移动 } else if (type.equals("S")) { calendar.add(Calendar.SECOND, num);// 把日期往后增加n秒.整数往后推,负数往前移动 } date = calendar.getTime(); // 这个时间就是日期往后推一天的结果 } catch (Exception e) { e.printStackTrace(); } return date; } public static Date toDate(String d) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (d != null) { Date date = sdf.parse(d); return date; } return null; } public static Date toDateTime(String d) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (d != null) { Date date = sdf.parse(d); return date; } return null; } public static Date toDateHour(String d) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH"); if (d != null) { Date date = sdf.parse(d); return date; } return null; } public static Date toDateMin(String d) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); if (d != null) { Date date = sdf.parse(d); return date; } return null; } /** * 获取月份 * * @author 孙东泉 2014-2-10 上午10:28:46 */ public static Date getMonth(String yearMonth) { String year = yearMonth.substring(0, 3); String month = yearMonth.substring(5, 6); Calendar calendar = Calendar.getInstance(); calendar.set(Integer.parseInt(year), Calendar.YEAR); calendar.set(Integer.parseInt(month), Calendar.MONTH); return calendar.getTime(); } /** * 获取本周的周一和周日 */ public static Map<String,String> getWeekDay() { Map<String, String> map = new HashMap<String, String>(); Calendar cal = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 获取本周一的日期 map.put("mon", df.format(cal.getTime())); // System.out.println("********得到本周一的日期*******" + // df.format(cal.getTime())); // 这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 增加一个星期,才是我们中国人理解的本周日的日期 cal.add(Calendar.WEEK_OF_YEAR, 1); map.put("sun", df.format(cal.getTime())); // System.out.println("********得到本周天的日期*******" + // df.format(cal.getTime())); return map; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
"UTILS_日期处理工具类_" 提供了一组用嵌入式语言实现的日期处理工具代码,帮助开发者更方便地进行时间相关的操作。下面我们将详细探讨这个工具类包含的主要知识点。 1. **日期和时间基础**: - 在编程中,日期和...
基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。
js 日期处理工具类,实现了日期的转换,日期格式: 30分钟前,16:20,昨天 11:11、11-17 10:10,等格式。
本篇文章将深入探讨Swift中的日期处理工具类,以及如何在实际项目中有效利用它们。 首先,Swift的`Date`类代表一个时间点,通常是一个全球协调时间(UTC)。这个类是不可变的,意味着所有基于`Date`的操作都不会...
java 日期处理工具类
很实用的安卓开发工具类,开发必备,日期处理工具类,IO流转换工具类,打印日志工具类,屏幕,字符串工具类,Toast工具类,弹框工具类.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
日期操作工具类,主要实现了日期的常用操作。 * * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和...
2014" 专门用于处理springboard定时任务修改cron参数的日期处理方法 12.获取本月第一天(月初时间) 13.获取本月最后一天(月底时间) 以上这些方法都在该Java工具类,当然不仅仅包含这些,还有其他的很多。
获取日期中的某数值。如获取月份 增加日期中某类型的某数值。如增加日期 获取精确的日期 判断字符串是否为日期字符串 获取日期字符串的日期风格。失敗返回null。 将日期字符串转化为日期。失败返回null。 ...
日期操作工具类,String转Long,String转Date,Date转String,Date转Long,Long转Date,Long转String等
超好用的时间工具类,包括时间各种格式转换,时间字符串互相转,时间增加,时间减去,单独获取日,获取月,获取时间等
本篇文章将介绍一个名为"LunarCalendar"的Java工具类,它专门用于农历日期的处理。 首先,我们来看`LunarCalendar`这个类的基本结构。这个类通常会包含一系列的内部数据结构来表示农历的年、月、日,可能还包括时、...
包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、"yyyyMM"等时间格式的转换。 其中: 1.String转Timestamp stringToTimestamp(String dateStr); 2.比较传入时间与当前时间前一...
Java日期处理工具类DateUtils详解 Java日期处理工具类DateUtils是Java中一个非常有用的工具类,它提供了一系列日期和时间处理相关的操作,涵盖了日期和时间的格式化、解析、计算等多方面的内容。本文将详细介绍...
2. **DateUtil**: 时间日期处理工具类,通常包含将日期格式化为字符串,字符串转换为日期,计算两个日期之间的差值等功能。在Android开发中,这类工具类能帮助开发者更好地管理和展示时间数据。 3. **BitmapUtil**:...