- 浏览: 169246 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
还有也许:
chinahezhiyongpLR8ZC-855575-605 ...
MyEclipse 6.0的注册码 -
lku1314:
好文 标记下! 但是还是有点犹豫 要不要这么做
Hibernate 动态映射表的两种策略 -
还有也许:
我都想不明白了,为啥都是
oooO ↘┏━┓ ↙ Oooo ...
MyEclipse6.0 安装svn插件 -
还有也许:
我本来也想用的,但是找不到下载插件的地方,so.....
MyEclipse6.0 安装svn插件 -
kissroom112:
不如用插件式的安装方法http://kissroom112.i ...
MyEclipse6.0 安装svn插件
近段时间关于日期的东西真是太烦人了,又是日期转换又是日期比较的,根据“合格的程序员就是不写重复代码的程序员”的指示精神。总结了一些,写了一个比较全的日期类,可以打成jar包来用。
package com.running.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * <p>Name: 日期工具类(DateUtils)</p> * <p>Author: No24</p> * <p>Date: 2006-9-12 12:22:40</p> * <p>Modifier: Fifth</p> * <p>DateLastModified: 2008-7-21 17:07</p> * <p>Version: V1.0.1</p> * <p>Description: </p> * <p>Remark: 提供一些常用的日期方法 * V1.0.1版本添加了getDate的默认方法 * </p> * <p>Copyright: Copyright (c) No24 All rights reserved.</p> * <p>Company: XCY</p> * @author No24 * @version 1.0 */ public abstract class DateUtils { private static final String DEFAULT_DATE_TIME = "yyyy-MM-dd HH:mm:ss"; /** * 按指定格式获得当前日期字符串 * @param format 格式字符串 * @return 返回指定格式的当前日期字符串 */ public static String getDate(String format) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } /** * 按默认的格式获得当前日期字符串 * @param format 格式字符串 * @return 返回指定格式的当前日期字符串 */ public static String getDate(){ return new SimpleDateFormat(DEFAULT_DATE_TIME).format(new Date()); } /** * 按指定格式获得指定日期字符串 * @param format 格式字符串 * @param date 指定日期 * @return 返回指定格式的指定日期字符串 */ public static String getDate(String format, Date date) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } /** * 获得指定日期前面或后面某小时的日期 * @param date 日期 * @param i 相差的小时数(负值为前面的日期) * @return 返回指定日期前面或后面某小时的日期 */ public static Date relationSecond(Date date, int i) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.SECOND, i); return cal.getTime(); } /** * 获得指定日期前面或后面某小时的日期 * @param date 日期 * @param i 相差的小时数(负值为前面的日期) * @return 返回指定日期前面或后面某小时的日期 */ public static Date relationMinute(Date date, int i) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE, i); return cal.getTime(); } /** * 获得指定日期前面或后面某小时的日期 * @param date 日期 * @param i 相差的小时数(负值为前面的日期) * @return 返回指定日期前面或后面某小时的日期 */ public static Date relationHour(Date date, int i) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.HOUR, i); return cal.getTime(); } /** * 获得指定日期前面或后面某天的日期 * @param date 日期 * @param i 相差的天数(负值为前面的日期) * @return 返回指定日期前面或后面某天的日期 */ public static Date relationDate(Date date, int i) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, i); return cal.getTime(); } /** * 获得指定日期前面或后面某月的日期 * @param date 日期 * @param i 相差的月数(负值为前面的日期) * @return 返回指定日期前面或后面某天的日期 */ public static Date relationMonth(Date date, int i) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, i); return cal.getTime(); } /** * 转换日期字符串成日期对象 * @param s 日期字符串 * @return 返回日期对象 * @throws Exception */ public static Date parseDate(String s) throws Exception { DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT,new Locale("zh", "CN")); return df.parse(s); } public static Date parseDate(String s,String format) throws Exception { SimpleDateFormat sdf = null; if (format == null) { sdf = new SimpleDateFormat(DEFAULT_DATE_TIME); } else { sdf = new SimpleDateFormat(format); } return sdf.parse(s); } public static String getDirDate(){ Calendar calendar = Calendar.getInstance(); return calendar.get(Calendar.YEAR) + "/"+ (calendar.get(Calendar.MONTH)+1) + "/" + calendar.get(Calendar.DAY_OF_MONTH) + "/"; } // public static //2011-1-14 闫振伟添加 //获得指定日期的本月最初时间和最后时间 public static String getDate(int num,Date date){ String stringDate=""; SimpleDateFormat sf=null; if(num==1){ sf=new SimpleDateFormat("yyyy-MM"); stringDate=sf.format(date)+"-"+getFirstDayOfMonth(new Date())+" 00:00:00"; }else if(num==2){ sf=new SimpleDateFormat("yyyy-MM"); int lastDay=getLastDayOfMonth(new Date()); stringDate=sf.format(date)+"-"+lastDay+" 23:59:59"; } return stringDate; } //获得某个月的第一天 private static int getFirstDayOfMonth(Date a){ Calendar b = Calendar.getInstance(); b.setTime(a); int firstDay = b.getActualMinimum(Calendar.DAY_OF_MONTH); return firstDay; } //获得某个月的最后一天 private static int getLastDayOfMonth(Date a){ Calendar b = Calendar.getInstance(); b.setTime(a); int lastDay = b.getActualMaximum(Calendar.DAY_OF_MONTH); return lastDay; } /** * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12 * @param date2 被比较的时间 为空(null)则为当前时间 * @param stype 返回值类型 0为多少天,1为多少个月,2为多少年 * @return * 举例: * compareDate("2009-09-12", null, 0);//比较天 * compareDate("2009-09-12", null, 1);//比较月 * compareDate("2009-09-12", null, 2);//比较年 */ public static int compareDate(String startDay,String endDay,int stype){ int n = 0; String[] u = {"天","月","年"}; String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd"; endDay = endDay==null?getCurrentDate("yyyy-MM-dd"):endDay; DateFormat df = new SimpleDateFormat(formatStyle); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); try { c1.setTime(df.parse(startDay)); c2.setTime(df.parse(endDay)); } catch (Exception e3) { System.out.println("时间在初始化时出错!"); } //List list = new ArrayList(); while (!c1.after(c2)) { // 循环对比,直到相等,n 就是所要的结果 //list.add(df.format(c1.getTime())); // 这里可以把间隔的日期存到数组中 打印出来 n++; if(stype==1){ c1.add(Calendar.MONTH, 1); // 比较月份,月份+1 } else{ c1.add(Calendar.DATE, 1); // 比较天数,日期+1 } } n = n-1; if(stype==2){ n = (int)n/365; } //System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n); return n; } public static String compareTime(String startTime,String endTime,String format){ Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); DateFormat df = new SimpleDateFormat(format); try { c1.setTime(df.parse(startTime)); c2.setTime(df.parse(endTime)); } catch (Exception e3) { System.out.println("时间在初始化时出错!"); } if(c1.after(c2)){ return "after"; }else if(c2.after(c1)){ return "before"; }else{ return "equals"; } } public static String getCurrentDate(String format){ Calendar day=Calendar.getInstance(); day.add(Calendar.DATE,0); SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd" String date = sdf.format(day.getTime()); return date; } public static void main(String[] args){ //按指定类型获得当前时间 String date1=DateUtils.getDate("今天是 yyyy-MM-dd"); //按默认格式获得当前时间,默认格式是yyyy-MM-dd hh:mm:ss String date2=DateUtils.getDate(); //按指定格式格式化指定日期 String date3=DateUtils.getDate("yyyy--MM--dd",new Date()); //获得指定日期前后的天数 Date date4=DateUtils.relationDate(new Date(), 0); //获得指定日期前后的月数 Date date5=DateUtils.relationMonth(new Date(), 0); //获得指定日期前后的小时数 Date date6=DateUtils.relationHour(new Date(), -1); //获得指定日期前后的分钟数 Date date7=DateUtils.relationMinute(new Date(), -1); //获得指定日期前后的秒数 Date date8=DateUtils.relationSecond(new Date(), -1); //将日期字符串转换为日期对象 try { Date date9=DateUtils.parseDate("2010-11-11"); System.out.println(DateUtils.getDate("yyyy-MM-dd", date9)); Date date10=DateUtils.parseDate("2010-11-11 19:23:59","yyyy-MM-dd hh:mm:ss"); String date11=DateUtils.getDirDate(); System.out.println("-------------"); System.out.println("date9="+date9); System.out.println("date10="+date10); System.out.println(date11); System.out.println("-------------"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(date1); System.out.println(date2); System.out.println(date3); System.out.println(date4); System.out.println(date5); System.out.println(date6); System.out.println(date7); System.out.println(date8); String date12=DateUtils.getDate(1, new Date()); System.out.println(date12); String date13=DateUtils.getDate(2, new Date()); System.out.println(date13); int date14=DateUtils.getLastDayOfMonth(new Date()); System.out.println(date14); int date15=DateUtils.getFirstDayOfMonth(new Date()); System.out.println(date15); } }
附上我的API,大家看了之后要多提建议呀。
- DateUtils_AIP.rar (14.6 KB)
- 下载次数: 11
评论
2 楼
还有也许
2011-01-18
jamesji 写道
It should be a final class instead of abstract class.
Your advice was very much to the point.
1 楼
jamesji
2011-01-14
It should be a final class instead of abstract class.
发表评论
-
Myeclipse 读取中文路径的配置文件
2012-09-20 17:25 2094public String getValue(String k ... -
StringUtils 的一些用法
2012-05-15 17:50 1713发现StringUtils 的一些方法非常的实用,遂总结之: ... -
两个日期之间的日期
2011-12-25 15:13 821public static List getDateList ... -
文件上传自动分割信息入库文件读取
2011-01-07 09:04 1294最近做了一个功能,由 ... -
项目中使用了Spring时添加log4j日志的做法
2009-12-23 14:53 2548如何将自己建的log日志放在自己的项目之下,以备项目在服务器上 ... -
index of用法
2009-12-03 16:58 3731String.IndexOf 方法 (value, [sta ...
相关推荐
日期转换工具可以帮助将日期从一种格式转换为另一种,或者从人类可读的格式转换为计算机友好的格式(如Unix时间戳)。这对于处理跨时区、解析用户输入或与其他系统交换日期信息的情况非常有用。 4. **时间戳转换**...
为了更好地操作、显示或存储日期和时间信息,SQL Server提供了多种内置的日期转换函数,其中最为常用的就是`CONVERT`函数。`CONVERT`函数允许将日期时间值转换为不同的字符串格式,这对于数据展示和兼容性处理尤为...
在实际应用中,处理JSON日期转换时,还需要考虑时区问题,因为JSON数据可能来自不同的时区。`json-lib`库允许自定义日期格式和时间戳格式,以确保在解析和序列化时的一致性。此外,现在的许多项目更倾向于使用`...
在IT领域,日期转换是一项常见的任务,特别是在编程中。Java作为一种广泛使用的编程语言,提供了丰富的API来处理日期和时间的转换。本项目“日期转换程序”显然是一个利用Java实现的工具,它能够帮助开发者将日期从...
2. **Java日期转换**: Java中的日期和时间处理最初通过`java.util.Date`和`java.text.SimpleDateFormat`进行,但现在推荐使用`java.time`包下的API,如`LocalDate`、`LocalDateTime`和`DateTimeFormatter`等,这些...
当用来格式化日期时,它能够将日期转换为指定格式的字符串。在本文档中,我们将详细介绍如何使用 `CONVERT` 函数来格式化日期,并通过具体的例子来展示各种格式化的结果。 #### 2. 使用 `CONVERT` 函数格式化日期 ...
它可能包含了转换公历与农历日期的功能,以及显示中国传统节气等附加信息。 2. 日历控件(修改): 这个控件可能是对标准PowerBuilder日期控件的改进版本,可能包含额外的特性或优化。修改可能包括更友好的用户界面...
在这个"android Gson转换List集合demo"中,我们将深入探讨如何使用Gson库来处理Android应用程序中的List集合与JSON之间的转换。 1. **Gson库介绍** Gson是一个开源库,它允许开发者将Java对象转换成对应的JSON格式...
2. **日期函数与时间函数** - `Now`:返回当前日期和时间。 - `Date`:返回当前日期,不包含时间部分。 - `Time`:返回当前时间,不包含日期部分。 - `DateSerial`:根据指定年、月、日创建日期。 - `DateValue...
在数据转换场景中,可以创建自定义注解,如`@CellIndex`,用于指定对象属性与Excel单元格的索引关联。这样,解析Excel数据时,可以根据注解自动映射到相应的属性,简化了代码。 6. **资源源代码**: 压缩包中的...
"日期转换的工具类" 提供了方便的方法来处理日期相关的转换工作,比如将日期转换为星期,将毫秒数转化为日期,反之亦然,以及将日期转化为用户友好的显示格式,如“刚刚”,“几分钟前”,“几小时前”,“昨天”等...
将JSON转换为Bean集合是Java开发中的常见操作,这有助于我们将接收到的JSON数据映射到对应的Java对象上,便于后续的业务处理。本篇将详细讲解如何实现这一过程,并提供一个具体的示例。 首先,我们需要理解JSON的...
2. **日期解析**:通过`SimpleDateFormat`的`parse()`方法,将字符串形式的开始和结束日期转换为`Date`类型,便于后续操作。 3. **循环计算日期**:使用`Calendar`类来遍历开始日期到结束日期之间的每一天。初始化`...
自定义日期转换器也需要实现`Converter`接口,但在`convert`方法内,我们需要处理日期字符串到`java.util.Date`对象的转换。可以使用`SimpleDateFormat`类来解析日期字符串,然后将其转换为日期对象。需要注意的是,...
java获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)、获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)、指定天的开始和结束日期、返回某个日期前几天的日期并转换成字符串
在Oracle中,`to_char()`函数被广泛用于将日期转换为指定格式的字符串。以下是一些常见的格式化选项: 1. **年份格式** - `Y`: 返回世纪年的最后一位。 ```sql SELECT to_char(sysdate, 'Y') FROM dual; ``` -...
2. Apache Commons Lang:提供了大量的实用工具方法,对于字符串处理、日期时间操作等有很大帮助。 3. javax.validation:这是一个验证API,如果`ValidatorHelper.java`涉及到数据验证,那么这个库可能是必需的。 4....
`String`到`Date`的转换需解析日期字符串,`Date`到`String`则是格式化日期。 在进行数据类型转换时,需要注意以下几点: - 转换可能导致精度损失,尤其是从大类型到小类型。 - 转换可能引发溢出,当转换后的数值...
- 对于农历节日,存储农历日期,并编写转换为公历日期的方法,然后进行比较。 - 创建一个节日集合,包含所有节日的实例,通过传入日期查询当前日期对应的节日。 6. **TestDate文件**: - 这个文件可能是测试代码...