java 日期函数_java下的日期函数实现

packagetest;importjava.util.*;importjava.text.*;importjava.util.Calendar;//日期类publicclassVeDate {/*** 获取现在时间

*

*@return返回时间类型 yyyy-MM-dd HH:mm:ss*/publicstaticDate getNowDate() {

Date currentTime=newDate();

SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateString=formatter.format(currentTime);

ParsePosition pos=newParsePosition(8);

Date currentTime_2=formatter.parse(dateString, pos);returncurrentTime_2;

}/*** 获取现在时间

*

*@return返回字符串格式 yyyy-MM-dd HH:mm:ss*/publicstaticString getStringDate() {

Date currentTime=newDate();

SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateString=formatter.format(currentTime);returndateString;

}/*** 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss

*

*@paramstrDate

*@return*/publicstaticDate strToDate(String strDate) {

SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

ParsePosition pos=newParsePosition(0);

Date strtodate=formatter.parse(strDate, pos);returnstrtodate;

}/*** 将时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss

*

*@paramdateDate

*@return*/publicstaticString dateToStrLong(java.util.Date dateDate) {

SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateString=formatter.format(dateDate);returndateString;

}/*** 提取一个月中的最后一天

*

*@paramday

*@return*/publicstaticDate getLastDate(longday) {

Date date=newDate();longdate_3_hm=date.getTime()-3600000*34*day;

Date date_3_hm_date=newDate(date_3_hm);returndate_3_hm_date;

}/*** 得到现在时间

*

*@return*/publicstaticDate getNow() {

Date currentTime=newDate();returncurrentTime;

}/*** 得到现在时间

*

*@return字符串 yyyyMMdd HHmmss*/publicstaticString getStringToday() {

Date currentTime=newDate();

SimpleDateFormat formatter=newSimpleDateFormat("yyyyMMdd HHmmss");

String dateString=formatter.format(currentTime);returndateString;

}/*** 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。

*

*@paramsformat

*            yyyyMMddhhmmss

*@return*/publicstaticString getUserDate(String sformat) {

Date currentTime=newDate();

SimpleDateFormat formatter=newSimpleDateFormat(sformat);

String dateString=formatter.format(currentTime);returndateString;

}/*** 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟*/publicstaticString getTwoHour(String st1, String st2) {

String[] kk=null;

String[] jj=null;

kk=st1.split(":");

jj=st2.split(":");if(Integer.parseInt(kk[0])0)returny-u+"";elsereturn"0";

}

}/*** 得到二个日期间的间隔天数*/publicstaticString getTwoDay(String sj1, String sj2) {

SimpleDateFormat myFormatter=newSimpleDateFormat("yyyy-MM-dd");longday=0;try{

java.util.Date date=myFormatter.parse(sj1);

java.util.Date mydate=myFormatter.parse(sj2);

day=(date.getTime()-mydate.getTime())/(24*60*60*1000);

}catch(Exception e) {return"";

}returnday+"";

}/*** 时间前推或后推分钟,其中JJ表示分钟.*/publicstaticString getPreTime(String sj1, String jj) {

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String mydate1="";try{

Date date1=format.parse(sj1);longTime=(date1.getTime()/1000)+Integer.parseInt(jj)*60;

date1.setTime(Time*1000);

mydate1=format.format(date1);

}catch(Exception e) {

}returnmydate1;

}/*** 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数*/publicstaticString getNextDay(String nowdate, String delay) {try{

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd");

String mdate="";

Date d=strToDate(nowdate);longmyTime=(d.getTime()/1000)+Integer.parseInt(delay)*24*60*60;

d.setTime(myTime*1000);

mdate=format.format(d);returnmdate;

}catch(Exception e) {return"";

}

}/*** 判断是否润年

*

*@paramddate

*@return*/publicstaticbooleanisLeapYear(String ddate) {/*** 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年

* 3.能被4整除同时能被100整除则不是闰年*/Date d=strToDate(ddate);

GregorianCalendar gc=(GregorianCalendar) Calendar.getInstance();

gc.setTime(d);intyear=gc.get(Calendar.YEAR);if((year%400)==0)returntrue;elseif((year%4)==0) {if((year%100)==0)returnfalse;elsereturntrue;

}elsereturnfalse;

}/*** 返回美国时间格式 26 Apr 2006

*

*@paramstr

*@return*/publicstaticString getEDate(String str) {

SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd");

ParsePosition pos=newParsePosition(0);

Date strtodate=formatter.parse(str, pos);

String j=strtodate.toString();

String[] k=j.split("");returnk[2]+k[1].toUpperCase()+k[5].substring(2,4);

}/*** 获取一个月的最后一天

*

*@paramdat

*@return*/publicstaticString getEndDateOfMonth(String dat) {//yyyy-MM-ddString str=dat.substring(0,8);

String month=dat.substring(5,7);intmon=Integer.parseInt(month);if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12) {

str+="31";

}elseif(mon==4||mon==6||mon==9||mon==11) {

str+="30";

}else{if(isLeapYear(dat)) {

str+="29";

}else{

str+="28";

}

}returnstr;

}/*** 判断二个时间是否在同一个周

*

*@paramdate1

*@paramdate2

*@return*/publicstaticbooleanisSameWeekDates(Date date1, Date date2) {

Calendar cal1=Calendar.getInstance();

Calendar cal2=Calendar.getInstance();

cal1.setTime(date1);

cal2.setTime(date2);intsubYear=cal1.get(Calendar.YEAR)-cal2.get(Calendar.YEAR);if(0==subYear) {if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2

.get(Calendar.WEEK_OF_YEAR))returntrue;

}elseif(1==subYear&&11==cal2.get(Calendar.MONTH)) {//如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2

.get(Calendar.WEEK_OF_YEAR))returntrue;

}elseif(-1==subYear&&11==cal1.get(Calendar.MONTH)) {if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2

.get(Calendar.WEEK_OF_YEAR))returntrue;

}returnfalse;

}/*** 产生周序列,即得到当前时间所在的年度是第几周

*

*@return*/publicstaticString getSeqWeek() {

Calendar c=Calendar.getInstance(Locale.CHINA);

String week=Integer.toString(c.get(Calendar.WEEK_OF_YEAR));if(week.length()==1)

week="0"+week;

String year=Integer.toString(c.get(Calendar.YEAR));returnyear+week;

}/*** 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号

*

*@paramsdate

*@paramnum

*@return*/publicstaticString getWeek(String sdate, String num) {//再转换为时间Date dd=VeDate.strToDate(sdate);

Calendar c=Calendar.getInstance();

c.setTime(dd);if(num.equals("1"))//返回星期一所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);elseif(num.equals("2"))//返回星期二所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);elseif(num.equals("3"))//返回星期三所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);elseif(num.equals("4"))//返回星期四所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);elseif(num.equals("5"))//返回星期五所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);elseif(num.equals("6"))//返回星期六所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);elseif(num.equals("0"))//返回星期日所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);returnnewSimpleDateFormat("yyyy-MM-dd").format(c.getTime());

}/*** 根据一个日期,返回是星期几的字符串

*

*@paramsdate

*@return*/publicstaticString getWeek(String sdate) {//再转换为时间Date date=VeDate.strToDate(sdate);

Calendar c=Calendar.getInstance();

c.setTime(date);//int hour=c.get(Calendar.DAY_OF_WEEK);//hour中存的就是星期几了,其范围 1~7//1=星期日 7=星期六,其他类推returnnewSimpleDateFormat("EEEE").format(c.getTime());

}publicstaticString getWeekStr(String sdate) {

String str="";

str=VeDate.getWeek(sdate);if("1".equals(str)) {

str="星期日";

}elseif("2".equals(str)) {

str="星期一";

}elseif("3".equals(str)) {

str="星期二";

}elseif("4".equals(str)) {

str="星期三";

}elseif("5".equals(str)) {

str="星期四";

}elseif("6".equals(str)) {

str="星期五";

}elseif("7".equals(str)) {

str="星期六";

}returnstr;

}/*** 两个时间之间的天数

*

*@paramdate1

*@paramdate2

*@return*/publicstaticlonggetDays(String date1, String date2) {if(date1==null||date1.equals(""))return0;if(date2==null||date2.equals(""))return0;//转换为标准时间SimpleDateFormat myFormatter=newSimpleDateFormat("yyyy-MM-dd");

java.util.Date date=null;

java.util.Date mydate=null;try{

date=myFormatter.parse(date1);

mydate=myFormatter.parse(date2);

}catch(Exception e) {

}longday=(date.getTime()-mydate.getTime())/(24*60*60*1000);returnday;

}/*** 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间

* 此函数返回该日历第一行星期日所在的日期

*

*@paramsdate

*@return*/publicstaticString getNowMonth(String sdate) {//取该时间所在月的一号sdate=sdate.substring(0,8)+"01";//得到这个月的1号是星期几Date date=VeDate.strToDate(sdate);

Calendar c=Calendar.getInstance();

c.setTime(date);intu=c.get(Calendar.DAY_OF_WEEK);

String newday=VeDate.getNextDay(sdate, (1-u)+"");returnnewday;

}/*** 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数

*

*@paramk:表示是取几位随机数*/publicstaticString getNo(intk) {returngetUserDate("yyyyMMddhhmmss")+getRandom(k);

}/*** 返回一个随机数

*

*@parami

*@return*/publicstaticString getRandom(inti) {

Random jjj=newRandom();if(i==0)return"";

String jj="";for(intk=0; k

jj=jj+jjj.nextInt(9);

}returnjj;

}/***

*@paramargs*/publicstaticbooleanRightDate(String date) {

SimpleDateFormat sdf;if(date==null)returnfalse;if(date.length()>10) {

sdf=newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");

}else{

sdf=newSimpleDateFormat("yyyy-MM-dd");

}try{

sdf.parse(date);

}catch(ParseException pe) {returnfalse;

}returntrue;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值