- 浏览: 21795 次
- 性别:
- 来自: 杭州
最近访客 更多访客>>
最新评论
-
kenny071218:
这位朋友,我也有同感啊!
程序员工作满4年后的淡定和忧愁以及出路 -
aaron2007:
没看到链接…………
贡献自己的成果供大家学习——现实中的项目 -
beitongmoming:
大家好,我个人贡献google网站的源代码.以供下载学习交流。 ...
贡献自己的成果供大家学习——现实中的项目 -
sigon:
啥也没有,你在贡献啥望梅止渴呀
贡献自己的成果供大家学习——现实中的项目 -
longrm:
东西在哪。。。
贡献自己的成果供大家学习——现实中的项目
package com.zrar.zjgp.cfm.ctrl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
/**
*
* 描述:此类为一自定义日期时间类,包括对于时间的各种操作,返回值均为String字符串
* 1。获得当前日期 getLocalDate()
* 2。获得当前时间 getLocalTime()
* 3。获得当前星期X getLocalWeek()
* 4。获得当前日期时间 getLocalDateTime()
* 5。获得当前日期星期几 getLocalDateWeek()
* 6。获得当前日期时间星期X getLocalDateTimeWeek()
* 7。在当前日期增加或者减少年,月,日 getDateAdd××() 其中××为Year,Month,Day
* 8。在自己定义的时间上增加或者减少小时,分钟,秒 getTimeAdd×× 其中××为hour,minute,second
* 9。设置日期,时间
* 10。计算两指定时间的时间差 getTimeMinus()
* 11。计算两指定日期的时间差 结果为天数 getDateMinus()
* 12。将从数据库中得到的时间差转换为标准的 XX 天 XX 小时 XX 分 XX 秒 getDBTimeMinus()
* 13。日期转换 在String Date 和Calendar 之间互转 convert();
* 14。返回传入的日期之间的所包含天数 getDateMinusList();
*
* 注意事项: 1.日期格式 2006-06-06 以"-"分割。
* 2.时间格式 20:23:23 以":"分割。
* 3.JDK 1.4 以上。
*
* 实例:
*
* @author wyhai
*/
public class ZrarDateTime {
private int x; //日期属性 年
private int y; //日期属性 月
private int z; //日期属性 日
private Calendar localTime; //当前日期
public ZrarDateTime()
{
localTime = Calendar.getInstance();
}
/**
* 功能:得到当前日期 格式为:xxxx-yy-zz (eg: 2006-06-26)<br>
* @return String
* @author Administrator
*/
public String getLocalDate()
{
String strY = null;
String strZ = null;
x = localTime.get(Calendar.YEAR);
y = localTime.get(Calendar.MONTH) + 1;
z = localTime.get(Calendar.DATE);
strY = y >= 10 ? String.valueOf(y) : ("0" + y) ;
strZ = z >= 10 ? String.valueOf(z) : ("0" + z) ;
return x + "-" + strY + "-" + strZ;
}
/**
* 功能:得到当前时间 格式为:xx:yy:zz (eg: 4:26:59)<br>
* @return String
* @author Administrator
*/
public String getLocalTime()
{
String strY = null;
String strZ = null;
x = localTime.get(Calendar.HOUR);
y = localTime.get(Calendar.MINUTE);
z = localTime.get(Calendar.SECOND);
strY = y >= 10 ? String.valueOf(y) : ("0" + y) ;
strZ = z >= 10 ? String.valueOf(z) : ("0" + z) ;
return x + ":" + strY + ":" + strZ;
}
/**
*
* 功能:得到当前时间 星期x<br>
*
* @return dateWeek
* @author Administrator
*/
public String getLocalWeek()
{
String dateWeek = null;
int nWeek = 0;
nWeek = localTime.get(Calendar.DAY_OF_WEEK) - 1;
switch (nWeek)
{
case 1: dateWeek = "星期一" ; break;
case 2: dateWeek = "星期二" ; break;
case 3: dateWeek = "星期三" ; break;
case 4: dateWeek = "星期四" ; break;
case 5: dateWeek = "星期五" ; break;
case 6: dateWeek = "星期六" ; break;
case 0: dateWeek = "星期日" ; break;
}
return dateWeek;
}
/**
* 功能:得到当前日期时间 格式为:xxxx-yy-zz xx:yy:zz (eg: 2006-06-26 4:26:59 )<br>
* @return String dateTime
* @author Administrator
*/
public String getLocalDateTime()
{
String dateTime = getLocalDate() + " " + getLocalTime();
return dateTime;
}
/**
*
* 功能:得到当前日期 格式为:xxxx-yy-zz 星期X<br>
*
* @return dateWeek
* @author Administrator
*/
public String getLocalDateWeek()
{
String dateWeek = null ;
String [] xx = getLocalDate().split("-") ;
if(xx.length==3)
{
dateWeek = xx[0] + "年" + xx[1]+ "月" + xx[2] + "日 " + getLocalWeek() ;
}else
{
dateWeek = "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
return dateWeek;
}
/**
*
* 功能:得到当前日期时间 格式为:xxxx-yy-zz 星期X xx:yy:zz(eg: 2006-06-26 星期X 4:26:59 )<br> <br>
*
* @return
* @author Administrator
*/
public String getLocalDateTimeWeek()
{
String dateTimeWeek = getLocalDateWeek() + " " +getLocalTime() ;
return dateTimeWeek;
}
/**
* 功能:得到当前日期的前面,或者后面几天<br>
* @param days (正数表示后面几天,负数表示前面几天)
* @return String
* @author Administrator
*/
public String getDateAddDay(int days)
{
return addDateAll(Calendar.DATE,days);
}
/**
* 功能:得到当前日期的前面,或者后面几月<br>
* @param months (正数表示后面几月,负数表示前面几月)
* @return String
* @author Administrator
*/
public String getDateAddMonth(int months)
{
return addDateAll(Calendar.MONTH,months);
}
/**
* 功能:得到当前日期的前面,或者后面几年<br>
* @param years (正数表示后面几年,负数表示前面几年)
* @return String
* @author Administrator
*/
public String getDateAddYear(int years)
{
return addDateAll(Calendar.YEAR,years);
}
/**
* 功能:设置自定义日期<br>
* @param date
* @return
* @author Administrator
*/
private void setDate(String date)
{
String dates[] = date.split("-");
x = Integer.parseInt(dates[0].trim());
y = Integer.parseInt(dates[1].trim()) - 1;
z = Integer.parseInt(dates[2].trim());
localTime.set(x,y,z);
}
/**
* 功能:设置自定义时间<br>
* @param time
* @return
* @author Administrator
*/
private void setTime(String time)
{
String times[] = time.split(":");
x = Integer.parseInt(times[0]);
y = Integer.parseInt(times[1]);
z = Integer.parseInt(times[2]);
localTime.set(1999,9,9,x,y,z);
}
/**
* 功能:得到自定义指定日期前面,或者后面的几天<br>
* @param date (自定义日期时间 eg: 2006-06-06)
* @param days (正数表示后面几天,负数表示前面几天)
* @return String
* @author Administrator
*/
public String getDateAddDay(String date , int days)
{
if(date.split("-").length == 3)
{
setDate(date);
return addDateAll(Calendar.DATE,days);
}else
{
return "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
}
/**
* 功能:得到自定义日期前面,或者后面的几月<br>
* @param date (自定义日期时间 eg: 2006-06-06)
* @param months (正数表示后面几月,负数表示前面几月)
* @return
* @author Administrator
*/
public String getDateAddMonth(String date , int months)
{
if(date.split("-").length == 3)
{
setDate(date);
return addDateAll(Calendar.MONTH,months);
}else
{
return "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
}
/**
* 功能:得到自定义日期前面,或者后面的几年<br>
* @param date (自定义日期时间 eg: 2006-06-06)
* @param years (正数表示后面几年,负数表示前面几年)
* @return String
* @author Administrator
*/
public String getDateAddYear(String date , int years)
{
if(date.split("-").length == 3)
{
setDate(date);
return addDateAll(Calendar.YEAR,years);
}else
{
return "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
}
/**
* 功能:得到当前时间的前面,或者后面几秒<br>
* @param seconds (正数表示后面几秒,负数表示前面几秒)
* @return String
* @author Administrator
*/
public String getTimeAddSecond(int seconds)
{
return addTimeAll(Calendar.SECOND,seconds);
}
/**
* 功能:得到当前时间的前面,或者后面几分<br>
* @param minutes (正数表示后面几分,负数表示前面几分)
* @return String
* @author Administrator
*/
public String getTimeAddMinute(int minutes)
{
return addTimeAll(Calendar.MINUTE,minutes);
}
/**
* 功能:得到当前时间的前面,或者后面几小时<br>
* @param hours (正数表示后面几小时,负数表示前面几小时)
* @return String
* @author Administrator
*/
public String getTimeAddHour(int hours)
{
return addTimeAll(Calendar.HOUR,hours);
}
/**
* 功能:得到指定时间的前面,或者后面几秒<br>
* @param time (指定时间)
* @param seconds (正数表示后面几秒,负数表示前面几秒)
* @return String
* @author Administrator
*/
public String getTimeAddSecond(String time ,int seconds)
{
if(time.split(":").length == 3)
{
setTime(time);
return addTimeAll(Calendar.SECOND,seconds);
}else
{
return "时间格式为hh:mm:ss 你输入的有误!" ;
}
}
/**
* 功能:得到指定时间的前面,或者后面几分<br>
* @param time (指定时间)
* @param minutes (正数表示后面几分,负数表示前面几分)
* @return String
* @author Administrator
*/
public String getTimeAddMinute(String time ,int minutes)
{
if(time.split(":").length == 3)
{
setTime(time);
return addTimeAll(Calendar.MINUTE,minutes);
}else
{
return "时间格式为hh:mm:ss 你输入的有误!" ;
}
}
/**
* 功能:得到指定时间的前面,或者后面几小时<br>
* @param time (指定时间)
* @param hours (正数表示后面几小时,负数表示前面几小时)
* @return String
* @author Administrator
*/
public String getTimeAddHour(String time ,int hours)
{
if(time.split(":").length == 3)
{
setTime(time);
return addTimeAll(Calendar.HOUR,hours);
}else
{
return "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
}
/**
* 功能:得到两个指定时间的时间差<br>
* @param startTime 开始时间
* @param endTime 结束时间
* @return minusTime 时间差
* @author Administrator
*/
public String getTimeMinus(String startTime, String endTime)
{
String minusTime = null;
if((startTime.split(":").length == 3) && (endTime.split(":").length == 3))
{
int time[] = null;
if(startTime.compareTo(endTime)<0)
{
time = getTotalTime(startTime,endTime);
minusTime = "+ " + getTotalTimeFormat(time[0],time[1],time[2]);
}else
{
time = getTotalTime(endTime,startTime);
minusTime = "- " + getTotalTimeFormat(time[0],time[1],time[2]);
}
return minusTime ;
}else
{
return "日期格式为YYYY-MM-DD 你输入的有误!" ;
}
}
/***
*
* 功能:得到两个指定日期的时间差 天数<br>
*
* @param startDate
* @param endDate
* @return
* @author Administrator
*/
public int getDateMinus(String startDate, String endDate)
{
int index = 0 ;
if(startDate.compareTo(endDate)<0)
{
while( !getDateAddDay(startDate,index).equals( endDate))
{
index += 1;
}
}else
{
while( !getDateAddDay(endDate,index).equals( startDate))
{
index += 1;
}
index = -index;
}
return index;
}
/***
* 返回传入的日期之间的所包含天数 List
* @param startDate
* @param endDate
* @return
*/
public ArrayList getDateMinusList(String startDate, String endDate)
{
int index = 0 ;
ArrayList arrayDays = new ArrayList();
if(startDate.compareTo(endDate)<0)
{
while( !getDateAddDay(startDate,index).equals( endDate))
{
arrayDays.add(getDateAddDay(startDate,index));
index += 1;
}
arrayDays.remove(0);
}else
{
while( !getDateAddDay(endDate,index).equals( startDate))
{
arrayDays.add(getDateAddDay(endDate,index));
index += 1;
}
arrayDays.remove(0);
}
return arrayDays;
}
/**
*
* 功能:将从数据库中得到的时间差转换为标准的XX天XX小时XX分XX秒<br>
*
* @param DBTimeMinus
* @return String formatDBTime
* @author Administrator
*/
public String getDBTimeMinus(String DBTimeMinus)
{
String formatDBTime = null ;
double DBtime = 0 ;
try
{
DBtime = Double.parseDouble(DBTimeMinus);
}catch(Exception e)
{
return "你输入的参数有误!" ;
}
int days = 0 ;
int hours = 0 ;
int minutes = 0 ;
int seconds = 0 ;
double x = 0 ;
double y = 0 ;
x = DBtime ;
y = Math.floor(x);
days = (int)y ;
x = (x - y) * 24 ;
y = Math.floor(x);
hours = (int)y ;
x = (x - y) * 60 ;
y = Math.floor(x);
minutes = (int)y ;
x = (x - y) * 60 ;
y = Math.floor(x);
seconds = (int)y ;
formatDBTime = days + "天" + hours + "小时" + minutes + "分" + "" + seconds + "秒" ;
return formatDBTime ;
}
/**
*
* 功能:将从数据库中得到的时间差转换为标准的XX天XX小时XX分XX秒<br>
*
* @param DBTimeMinus
* @return String formatDBTime
* @author Administrator
*/
public String getDBTimeMinus(double DBTimeMinus)
{
String formatDBTime = null ;
formatDBTime = getDBTimeMinus(String.valueOf(DBTimeMinus));
return formatDBTime ;
}
/**
* 功能 :给增加时间的方法提供支持
* @param calendarProperty Calendar的各个属性
* @return String
*/
private String addTimeAll(int calendarProperty, int property)
{
String strY = null;
String strZ = null;
localTime.add(calendarProperty,property);
x = localTime.get(Calendar.HOUR);
y = localTime.get(Calendar.MINUTE);
z = localTime.get(Calendar.SECOND);
strY = y >= 10 ? String.valueOf(y) : ("0" + y) ;
strZ = z >= 10 ? String.valueOf(z) : ("0" + z) ;
return x + ":" + strY + ":" + strZ;
}
/**
* 功能 :给增加日期的方法提供支持
* @param calendarProperty Calendar的各个属性
* @return String
*/
private String addDateAll(int calendarProperty, int property)
{
String strY = null;
String strZ = null;
localTime.add(calendarProperty,property);
x = localTime.get(Calendar.YEAR);
y = localTime.get(Calendar.MONTH) + 1;
z = localTime.get(Calendar.DATE);
strY = y >= 10 ? String.valueOf(y) : ("0" + y) ;
strZ = z >= 10 ? String.valueOf(z) : ("0" + z) ;
return x + "-" + strY + "-" + strZ;
}
/**
* 将获得的总的时间(小时,分钟,秒)数转换为String格式
* @param hour int
* @param minute int
* @param second int
* @return totalTime String
*/
private String getTotalTimeFormat(int hour ,int minute, int second)
{
int nHour = 0;
int nHourIn = 0;
int nMinute = 0;
int nMinuteIn = 0;
int nSecond = 0;
/*********************秒数 格式化*********************/
if(second > 0 && second <60)
{
nSecond = second;
}else
{
if(second < 0 )
{
nSecond = second%60 + 60 ;
nMinuteIn = second/60 - 1 ;
}
if(second > 60 )
{
nSecond = second%60 ;
nMinuteIn= second/60 ;
}
}
/****************分 格式化**************************/
if(nMinuteIn + minute > 0 && nMinuteIn + minute < 60)
{
nMinute = nMinuteIn + minute;
}else
{
if(nMinuteIn+minute < 0)
{
nMinute = (nMinuteIn + minute)%60 + 60;
nHourIn = (nMinuteIn + minute)/60 - 1 ;
}
if(nMinuteIn+minute > 60)
{
nMinute = (nMinuteIn + minute)%60 ;
nHourIn = (nMinuteIn + minute)/60 ;
}
}
/******************小时 格式化*************************/
nHour = hour + nHourIn ;
return nHour + "小时" + nMinute + "分钟"+nSecond + "秒";
}
/**
* 获得时间差函数,即小时,分,秒的TotalTime
* @param startTime String
* @param endTime String
* @return total int[]
*/
private int[] getTotalTime(String startTime , String endTime)
{
int[] total = new int[3];
String timeOut [] = endTime.split(":") ;
String timeIn [] = startTime.split(":") ;
for(int i = 0 ; i < 3 ; i++)
{
total[i] = Integer.parseInt(timeOut[i]) - Integer.parseInt(timeIn[i]);
}
return total ;
}
/**
* 日期转换 在 String ,Date ,Calendar之间相互转换
*
* @param obj 传入的需要转换的对象(String ,Date, Calendar)
* @param toObj 需要转换成的对象 (String.class,Date.class,Calendar.class)
* @return returnObject (返回的对象强制转换成与 toObj 一致)
*/
public Object convert(Object obj, Class toObj)
{
Object returnObject = null;
if(obj instanceof String)
{
if(((String)obj).split("-").length == 3)
{
if(toObj == Calendar.class)
{
setDate(obj.toString());
returnObject = localTime;
}
if(toObj == Date.class)
{
setDate(obj.toString());
returnObject = localTime.getTime();
}
}else
{
returnObject = "日期格式为YYYY-MM-DD 你输入的有误!";
}
}
if(obj instanceof Calendar)
{
if(toObj == String.class)
{
localTime = (Calendar)obj;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
returnObject = simpleDateFormat.format(localTime.getTime());
}
if(toObj == Date.class)
{
localTime = (Calendar)obj;
returnObject = localTime.getTime();
}
}
if(obj instanceof Date)
{
if(toObj == Calendar.class)
{
localTime.setTime((Date)obj);
returnObject = localTime;
}
if(toObj == String.class)
{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
returnObject = simpleDateFormat.format((Date)obj);
}
}
return returnObject;
}
public static void main(String[] args)
{
//System.out.println( new ZrarDateTime().getDateMinus("2006-06-06","2009-06-09"));
//System.out.println(new ZrarDateTime().getLocalDateTimeWeek());
// String origin = "2009-06-06";
// Date date = (Date)new ZrarDateTime().convert(origin,Date.class);
// String strDate = (String)new ZrarDateTime().convert(date,String.class);
// Calendar calDate = (Calendar)new ZrarDateTime().convert(strDate,Calendar.class);
// date = (Date)new ZrarDateTime().convert(calDate,Date.class);
// strDate = (String)new ZrarDateTime().convert(date,String.class);
// System.out.println(strDate);
// System.out.println(new ZrarDateTime().getLocalDateTime());
// System.out.println(new ZrarDateTime().getLocalDateTimeWeek());
// System.out.println(new ZrarDateTime().convert(new Date(),String.class));
// System.out.println(new ZrarDateTime().getDateMinus("2002-09-06","2006-06-06"));
// System.out.println(new ZrarDateTime().convert(new Date(),String.class));
System.out.println(new ZrarDateTime().getDateMinusList("2006-06-13","2006-06-12"));
}
}
发表评论
-
贡献自己的成果供大家学习——现实中的项目
2008-10-09 17:59 952在以往的学习中经常利用网络代码,很少为网络提供资源,现在我想把 ... -
java基础知识个人总结--数组与集合类
2007-10-11 13:42 1217数组一但创建 其长度和生命周期即被固定.并且数组里面仅能保存基 ... -
java基础知识个人总结-- 垃圾回收的优点和原理
2007-10-10 16:19 3819JAVA中的对象是在堆上分配,而在堆上分配存储空间的方式是昂贵 ... -
java基础知识个人总结--Java的接口和抽象类的异同。
2007-10-10 15:13 1203用abstract 关键字表示某个类为抽象类,表示该类中有方法 ... -
java基础知识个人总结--Java中的异常处理机制的简单原理和应用
2007-10-10 14:32 51111. Java中的异常处理机制的简单原理和应用。 ... -
java类的初始化
2007-06-27 09:22 1122关于JAVA类的初始化 (1)classLoad时候的初始化. ...
相关推荐
没事写了一个关于java时间处理的工具类,很简单
这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用
那么 我们可以自己实现 一个时间类 来满足程序中的需要。 定义名为MyTime的类 其中应有三个整型成员 时 hour 分 minute 秒 second 为了保 证数据的安全性 这三个成员变量应声明为私有。 为MyTime类定义构造方法 以...
我自己写的图片处理类,开发环境 vs2005,时间 2011-11-05
一个写Log日志的类,简单高效,多线程,有临界区保护,支持按日期,时间写日志,对新手
读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。 类和函数 读取文件函数: 一,List增加本序号(0开始)。 二,随机生成5000...
为了测试函数处理时间,自己写了关于时间度量的类来计算执行命令之间需要花的时间。此类简单易懂,使用和修改方便,带例子。此类比 GetTickCount()函数更精确。使用VC++, VC2010编译通过。希望些类给大家带来便利。
字符串处理是有时候订单出现异常,需要提取日志中的单号,那一天升级出现异常,3万多条单出错了,沙雕叫我手工提取,我看了一下觉得可以做一个工具出来提取,当时写的是控制台的,后面觉得做成窗口程序会比较方便就...
自己动手写搜索引擎 1 第1章 了解搜索引擎 1 1.1 Google神话 1 1.2 体验搜索引擎 1 1.3 你也可以做搜索引擎 4 1.4 本章小结 4 第2章 遍历搜索引擎技术 5 2.1 30分钟实现的搜索引擎 5 2.1.1 准备工作环境(10分钟) 5...
程序信息// 程序启动器// (暂无)// 程序单开验证// 权限信息// 开机启动项// 数组格式化// 列表内容判断// 列表内容判断(ListTool)// 字节压缩// 人民币格式化// 中文时辰转换// 日期时间转换// 日期时间处理// ...
最近在写一个项目,中间遇到一个文件上传的功能,需要缩略,等比缩放及水印功能,整合了一下以前的一些代码和网上一部份共享的资源,形成了这样一个功能比较齐全的类. 主要功能如下: 1.支持批量上传; 2.可自定义上传的...
网软志成分类信息网系统是定位于中高端市场的分类信息网管理系统,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大的分类信息网站平台。 网软志成是基于微软 .Net 平台...
网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个helper,于是萌生了收集全部helper的念头,以便日后使用。各式各样的几乎都能找到,所有功能性代码都是独立...
在Java程序设计过程中,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类中用字符串指定日期和时间的格式,字符串中的字符称为模式字符,模式字符区分大小写。常见的模式...
为了测试一断程序的运行时间,特意写了这么一个类,并添加了注释,主要是运用了几个函数数组列表函数list(),字符串分割成数组函数explode(),获取时间戳和微秒数microtime(),把微秒数分割成数组并转换成变量处理,...
Java整理的基础工具类项目 ...读写锁控制强制读取缓存同步 线程池管理类 ...Redis实现Ip、手机号等访问次数限时,支持按照时间段(天、时、分、秒),支持按时间内(每一时间内) LocaleDate 日期处理工具类
方便自己编程,后来慢慢积累,函数越来越多,于是封装成类,再后来简单的封装也不行了,于是花了一段时间进行整理设计,基本上是重写了这个类库,于是就有了这个界面和图象库,是对过去自己编程写的代码的一个总结与...
(DateUtil.java)时间处理类 (RandomUtil.java)随机函数处理类 (OperationUtil.java)Collection工具包类(CollectionUtil.java)等等,如果下载者觉得使用方面的话,在下十分感谢,申明:代码没有经过十分严格...