- 浏览: 6387 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
雁行:
谢谢,准备用。
函数很长,好像部分函数可以重构一下
比如:
g ...
DATE 工具类 -
fei089:
laozhou 写道
请问一句,是不是项目启动就开始执行了?
...
spring2.0+quartz 使用 -
menzi_love:
谢谢楼主,这样类太好了,很实用
DATE 工具类 -
12616383:
Quarzt已经配置好 tomcat 5.*启动报错 大 ...
spring2.0+quartz 使用 -
yanshuihualiveses:
顶! 先收藏了!谢谢!
DATE 工具类
public class DateUtil { //默认显示日期的格式 public static final String DATAFORMAT_STR = "yyyy-MM-dd"; //默认显示日期的格式 public static final String YYYY_MM_DATAFORMAT_STR = "yyyy-MM"; //默认显示日期时间的格式 public static final String DATATIMEF_STR = "yyyy-MM-dd HH:mm:ss"; //默认显示简体中文日期的格式 public static final String ZHCN_DATAFORMAT_STR = "yyyy年MM月dd日"; //默认显示简体中文日期时间的格式 public static final String ZHCN_DATATIMEF_STR = "yyyy年MM月dd日HH时mm分ss秒"; //默认显示简体中文日期时间的格式 public static final String ZHCN_DATATIMEF_STR_4yMMddHHmm = "yyyy年MM月dd日HH时mm分"; private static DateFormat dateFormat = null; private static DateFormat dateTimeFormat = null; private static DateFormat zhcnDateFormat = null; private static DateFormat zhcnDateTimeFormat = null; static { dateFormat = new SimpleDateFormat(DATAFORMAT_STR); dateTimeFormat = new SimpleDateFormat(DATATIMEF_STR); zhcnDateFormat = new SimpleDateFormat(ZHCN_DATAFORMAT_STR); zhcnDateTimeFormat = new SimpleDateFormat(ZHCN_DATATIMEF_STR); } private static DateFormat getDateFormat(String formatStr) { if (formatStr.equalsIgnoreCase(DATAFORMAT_STR)) { return dateFormat; } else if (formatStr.equalsIgnoreCase(DATATIMEF_STR)) { return dateTimeFormat; } else if (formatStr.equalsIgnoreCase(ZHCN_DATAFORMAT_STR)) { return zhcnDateFormat; } else if (formatStr.equalsIgnoreCase(ZHCN_DATATIMEF_STR)) { return zhcnDateTimeFormat; } else { return new SimpleDateFormat(formatStr); } } /** * 按照默认显示日期时间的格式"yyyy-MM-dd HH:mm:ss",转化dateTimeStr为Date类型 * dateTimeStr必须是"yyyy-MM-dd HH:mm:ss"的形式 * @param dateTimeStr * @return */ public static Date getDate(String dateTimeStr) { return getDate(dateTimeStr, DATATIMEF_STR); } /** * 按照默认formatStr的格式,转化dateTimeStr为Date类型 * dateTimeStr必须是formatStr的形式 * @param dateTimeStr * @param formatStr * @return */ public static Date getDate(String dateTimeStr, String formatStr) { try { if (dateTimeStr == null || dateTimeStr.equals("")) { return null; } DateFormat sdf = getDateFormat(formatStr); java.util.Date d = sdf.parse(dateTimeStr); return d; } catch (ParseException e) { throw new RuntimeException(e); } } /** * 将YYYYMMDD转换成Date日期 * @param date * @return * @throws BusinessException */ public static Date transferDate(String date) throws Exception { if (date == null || date.length() < 1) return null; if (date.length() != 8) throw new Exception("日期格式错误"); String con = "-"; String yyyy = date.substring(0, 4); String mm = date.substring(4, 6); String dd = date.substring(6, 8); int month = Integer.parseInt(mm); int day = Integer.parseInt(dd); if (month < 1 || month > 12 || day < 1 || day > 31) throw new Exception("日期格式错误"); String str = yyyy + con + mm + con + dd; return DateUtil.getDate(str, DateUtil.DATAFORMAT_STR); } /** * 将YYYY-MM-DD日期转换成yyyymmdd格式字符串 * @param date * @return */ public static String getYYYYMMDDDate(Date date) { if (date == null) return null; String yyyy = getYear(date) + ""; String mm = getMonth(date) + ""; String dd = getDay(date) + ""; mm = StringUtil.rightAlign(mm, 2, "0"); dd = StringUtil.rightAlign(dd, 2, "0"); return yyyy + mm + dd; } /** * 将YYYY-MM-DD日期转换成YYYYMMDDHHMMSS格式字符串 * @param date * @return */ public static String getYYYYMMDDHHMMSSDate(Date date) { if (date == null) return null; String yyyy = getYear(date) + ""; String mm = getMonth(date) + ""; String dd = getDay(date) + ""; String hh = getHour(date) + ""; String min = getMin(date) + ""; String ss = getSecond(date) + ""; mm = StringUtil.rightAlign(mm, 2, "0"); dd = StringUtil.rightAlign(dd, 2, "0"); hh = StringUtil.rightAlign(hh, 2, "0"); min = StringUtil.rightAlign(min, 2, "0"); ss = StringUtil.rightAlign(ss, 2, "0"); return yyyy + mm + dd + hh + min + ss; } /** * 将YYYY-MM-DD日期转换成yyyymmdd格式字符串 * @param date * @return */ public static String getYYYYMMDDDate(String date) { return getYYYYMMDDDate(getDate(date, DATAFORMAT_STR)); } /** * 将Date转换成字符串“yyyy-mm-dd hh:mm:ss”的字符串 * @param date * @return */ public static String dateToDateString(Date date) { return dateToDateString(date, DATATIMEF_STR); } /** * 将Date转换成formatStr格式的字符串 * @param date * @param formatStr * @return */ public static String dateToDateString(Date date, String formatStr) { DateFormat df = getDateFormat(formatStr); return df.format(date); } /** * 返回一个yyyy-MM-dd HH:mm:ss 形式的日期时间字符串中的HH:mm:ss * @param dateTime * @return */ public static String getTimeString(String dateTime) { return getTimeString(dateTime, DATATIMEF_STR); } /** * 返回一个formatStr格式的日期时间字符串中的HH:mm:ss * @param dateTime * @param formatStr * @return */ public static String getTimeString(String dateTime, String formatStr) { Date d = getDate(dateTime, formatStr); String s = dateToDateString(d); return s.substring(DATATIMEF_STR.indexOf('H')); } /** * 获取当前日期yyyy-MM-dd的形式 * @return */ public static String getCurDate() { //return dateToDateString(new Date(),DATAFORMAT_STR); return dateToDateString(Calendar.getInstance().getTime(), DATAFORMAT_STR); } /** * 获取当前日期yyyy年MM月dd日的形式 * @return */ public static String getCurZhCNDate() { return dateToDateString(new Date(), ZHCN_DATAFORMAT_STR); } /** * 获取当前日期时间yyyy-MM-dd HH:mm:ss的形式 * @return */ public static String getCurDateTime() { return dateToDateString(new Date(), DATATIMEF_STR); } /** * 获取当前日期时间yyyy年MM月dd日HH时mm分ss秒的形式 * @return */ public static String getCurZhCNDateTime() { return dateToDateString(new Date(), ZHCN_DATATIMEF_STR); } /** * 获取日期d的days天后的一个Date * @param d * @param days * @return */ public static Date getInternalDateByDay(Date d, int days) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.DATE, days); return now.getTime(); } public static Date getInternalDateByMon(Date d, int months) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.MONTH, months); return now.getTime(); } public static Date getInternalDateByYear(Date d, int years) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.YEAR, years); return now.getTime(); } public static Date getInternalDateBySec(Date d, int sec) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.SECOND, sec); return now.getTime(); } public static Date getInternalDateByMin(Date d, int min) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.MINUTE, min); return now.getTime(); } public static Date getInternalDateByHour(Date d, int hours) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); now.add(Calendar.HOUR_OF_DAY, hours); return now.getTime(); } /** * 根据一个日期字符串,返回日期格式,目前支持4种 * 如果都不是,则返回null * @param DateString * @return */ public static String getFormateStr(String DateString) { String patternStr1 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"; //"yyyy-MM-dd" String patternStr2 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}"; //"yyyy-MM-dd HH:mm:ss"; String patternStr3 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日";//"yyyy年MM月dd日" String patternStr4 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日[0-9]{1,2}时[0-9]{1,2}分[0-9]{1,2}秒";//"yyyy年MM月dd日HH时mm分ss秒" Pattern p = Pattern.compile(patternStr1); Matcher m = p.matcher(DateString); boolean b = m.matches(); if (b) return DATAFORMAT_STR; p = Pattern.compile(patternStr2); m = p.matcher(DateString); b = m.matches(); if (b) return DATATIMEF_STR; p = Pattern.compile(patternStr3); m = p.matcher(DateString); b = m.matches(); if (b) return ZHCN_DATAFORMAT_STR; p = Pattern.compile(patternStr4); m = p.matcher(DateString); b = m.matches(); if (b) return ZHCN_DATATIMEF_STR; return null; } /** * 将一个"yyyy-MM-dd HH:mm:ss"字符串,转换成"yyyy年MM月dd日HH时mm分ss秒"的字符串 * @param dateStr * @return */ public static String getZhCNDateTime(String dateStr) { Date d = getDate(dateStr); return dateToDateString(d, ZHCN_DATATIMEF_STR); } /** * 将一个"yyyy-MM-dd"字符串,转换成"yyyy年MM月dd日"的字符串 * @param dateStr * @return */ public static String getZhCNDate(String dateStr) { Date d = getDate(dateStr, DATAFORMAT_STR); return dateToDateString(d, ZHCN_DATAFORMAT_STR); } /** * 将dateStr从fmtFrom转换到fmtTo的格式 * @param dateStr * @param fmtFrom * @param fmtTo * @return */ public static String getDateStr(String dateStr, String fmtFrom, String fmtTo) { Date d = getDate(dateStr, fmtFrom); return dateToDateString(d, fmtTo); } /** * 比较两个"yyyy-MM-dd HH:mm:ss"格式的日期,之间相差多少毫秒,time2-time1 * @param time1 * @param time2 * @return */ public static long compareDateStr(String time1, String time2) { Date d1 = getDate(time1); Date d2 = getDate(time2); return d2.getTime() - d1.getTime(); } /** * 将小时数换算成返回以毫秒为单位的时间 * @param hours * @return */ public static long getMicroSec(BigDecimal hours) { BigDecimal bd; bd = hours.multiply(new BigDecimal(3600 * 1000)); return bd.longValue(); } /** * 获取Date中的分钟 * @param d * @return */ public static int getMin(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.MINUTE); } /** * 获取Date中的小时(24小时) * @param d * @return */ public static int getHour(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.HOUR_OF_DAY); } /** * 获取Date中的秒 * @param d * @return */ public static int getSecond(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.SECOND); } /** * 获取xxxx-xx-xx的日 * @param d * @return */ public static int getDay(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.DAY_OF_MONTH); } /** * 获取月份,1-12月 * @param d * @return */ public static int getMonth(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.MONTH) + 1; } /** * 获取19xx,20xx形式的年 * @param d * @return */ public static int getYear(Date d) { Calendar now = Calendar.getInstance(TimeZone.getDefault()); now.setTime(d); return now.get(Calendar.YEAR); } /** * 得到d的上个月的年份+月份,如200505 * @return */ public static String getYearMonthOfLastMon(Date d) { Date newdate = getInternalDateByMon(d, -1); String year = String.valueOf(getYear(newdate)); String month = String.valueOf(getMonth(newdate)); return year + month; } /** * 得到当前日期的年和月如200509 * @return String */ public static String getCurYearMonth() { Calendar now = Calendar.getInstance(TimeZone.getDefault()); String DATE_FORMAT = "yyyyMM"; java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT); sdf.setTimeZone(TimeZone.getDefault()); return (sdf.format(now.getTime())); } public static Date getNextMonth(String year, String month) { String datestr = year + "-" + month + "-01"; Date date = getDate(datestr, DATAFORMAT_STR); return getInternalDateByMon(date, 1); } public static Date getLastMonth(String year, String month) { String datestr = year + "-" + month + "-01"; Date date = getDate(datestr, DATAFORMAT_STR); return getInternalDateByMon(date, -1); } /** * 得到日期d,按照页面日期控件格式,如"2001-3-16" * @param d * @return */ public static String getSingleNumDate(Date d) { return dateToDateString(d, DATAFORMAT_STR); } /** * 得到d半年前的日期,"yyyy-MM-dd" * @param d * @return */ public static String getHalfYearBeforeStr(Date d) { return dateToDateString(getInternalDateByMon(d, -6), DATAFORMAT_STR); } /** * 得到当前日期D的月底的前/后若干天的时间,<0表示之前,>0表示之后 * @param d * @param days * @return */ public static String getInternalDateByLastDay(Date d, int days) { return dateToDateString(getInternalDateByDay(d, days), DATAFORMAT_STR); } /** * 日期中的年月日相加 * @param field int 需要加的字段 年 月 日 * @param amount int 加多少 * @return String */ public static String addDate(int field, int amount) { int temp = 0; if (field == 1) { temp = Calendar.YEAR; } if (field == 2) { temp = Calendar.MONTH; } if (field == 3) { temp = Calendar.DATE; } String Time = ""; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(TimeZone.getDefault()); cal.add(temp, amount); Time = sdf.format(cal.getTime()); return Time; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 获得系统当前月份的天数 * @return */ public static int getCurentMonthDay() { Date date = Calendar.getInstance().getTime(); return getMonthDay(date); } /** * 获得指定日期月份的天数 * @return */ public static int getMonthDay(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 获得指定日期月份的天数 yyyy-mm-dd * @return */ public static int getMonthDay(String date) { Date strDate = getDate(date, DATAFORMAT_STR); return getMonthDay(strDate); } public static String getStringDate(Calendar cal) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); return format.format(cal.getTime()); } /** * @param args */ public static void main(String[] args) { // //System.out.print(DateUtil.getDate("04:04:04","HH:mm:ss")); // System.out.print("\n"+DateUtil.getCurZhCNDateTime()); // System.out.print("\n"+getFormateStr(DateUtil.getCurDate())); // System.out.print("\n"+compareDateStr("1900-1-1 1:1:2","1900-1-1 1:1:3")); // System.out.print("\n"+getDay(new Date())); // System.out.print("\n"+getMonth(new Date())); // System.out.print("\n"+getYear(new Date())); // System.out.print("\n"+getMin(new Date())); //// System.out.print("\n"+new Date().getSeconds()); /*Date d1 = new Date(2007,11,30); Date d2 = new Date(2007,12,1); if(d2.compareTo(d1)>0){ System.out.println("d2大于d1"); }else{ System.out.println("d2小于d1"); }*/ System.out.println(addDate(1, 1)); System.out.println(addDate(2, 1)); System.out.println(addDate(3, 1)); System.out.println(getYYYYMMDDHHMMSSDate(new Date())); System.out.println(getCurentMonthDay()); } }
评论
3 楼
雁行
2009-06-25
谢谢,准备用。
函数很长,好像部分函数可以重构一下
比如:
getYYYYMMDDDate(Date date) 和getYYYYMMDDHHMMSSDate(Date date)
完全可以用一个函数实现
另外这两个函数体里的实现,似乎啰嗦了些,直接用类似:
即可。
pattern 可以改成静态常量,作为参数传入。
函数很长,好像部分函数可以重构一下
比如:
getYYYYMMDDDate(Date date) 和getYYYYMMDDHHMMSSDate(Date date)
完全可以用一个函数实现
另外这两个函数体里的实现,似乎啰嗦了些,直接用类似:
String pattern = "yyyyMMddHHmmss"; SimpleDateFormat sdf= new SimpleDateFormat(pattern); String sDateStr = sdf.format(date); return sDateStr;
即可。
pattern 可以改成静态常量,作为参数传入。
2 楼
menzi_love
2009-05-14
谢谢楼主,这样类太好了,很实用
1 楼
yanshuihualiveses
2009-04-27
顶! 先收藏了!谢谢!
相关推荐
这是本人自己整理的java中的Date工具类,包含了常用的时间格式化方法和转换方法;在工作中使用起来还是蛮方便的;希望对大家有帮助!
date工具类
最近由于项目需要写了一些关于操作Date的代码,建议把经常需要的工具类保存下来,以备不时之需
本篇文章将详细讲解`String`和`Date`工具类中涉及的知识点,以及如何在实际开发中有效地运用它们。 首先,我们来看`String`工具类。在Java中,`String`对象是不可变的,这意味着一旦创建,就不能改变其内容。因此,...
在Java编程中,Date类是处理日期和时间的基础类,但在实际开发中,由于Date类本身的API设计并不十分友好,通常我们会使用工具类来简化日期的处理工作。本主题聚焦于一个名为"Date日期操作工具类"的实用工具,它提供...
很好的日期时间工具类,比较全,用语java开发中日期的处理
Date工具类,用于日期和时间的格式化和转换;Dialog工具类,提供自定义对话框的快速创建;还有可能包括Utils类,其中包含了各种通用的方法,如字符串操作、颜色转换等。 总的来说,这个“Java-Android工具类”集合...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...
2. **Date工具类**: Java中的日期处理可以通过`java.util.Date`和`java.time`包来实现。Date类用于表示特定的瞬间,精确到毫秒。可以使用`SimpleDateFormat`进行日期格式化和解析。而在Java 8中引入的`java.time`...
以下是根据标题“java常用工具类”和描述中提到的“date工具类”、“string工具类”等进行的详细知识点解析: 1. **Date和Calendar工具类**: - `java.util.Date`:表示特定瞬间,精确到毫秒。但直接操作日期对象...
java Date操作工具类,对日期的各种基本的操作
Java提供了多种方式来处理日期和时间,包括内置的`java.util.Date`类,以及从Java 8开始引入的`java.time`包中的新API。在描述中提到的"my97date"可能是指My97 DatePicker,这是一个流行的Java日期选择控件,常用于...
非常好用的Date工具类 1、计算两个日期之间相差的天数 2、判断日期是否为周六日 3、获取当前周开始日期 4、获取当前周结束日期 5、判断年份是否是闰年 6、根据年份和月份计算天数 7、判断日期为该年的第几周 等等
date常用工具类
包含了常用的java时间日期的 双向转换,日期转换为相应格式的字符串,字符串转换为相应格式的日期等。
Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...
可以通过此工具类获取当前date类型的时间,可以获取16位的随机数
date工具类
Date时间操作工具类 js: 1.一个日期时间加上分钟数,得到一个新的日期时间 2.判断当前时间是否在时间段之内 3.根据默认的格式格式化时间 4.根据指定的格式格式化时间 5.改变月份 6.改变天数 7.计算天数间隔 8.Date转...