1.java.util.*;
2.importjava.text.*;
3.importjava.util.Calendar;
4.
5.publicclassVeDate {
6./**
7.*获取现在时间
8.*
9.* @return返回时间类型yyyy-MM-dd HH:mm:ss
10.*/
11.publicstaticDate getNowDate() {
12.Date currentTime =newDate();
13.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
14.String dateString = formatter.format(currentTime);
15.ParsePosition pos =newParsePosition(8);
16.Date currentTime_2 = formatter.parse(dateString, pos);
17.returncurrentTime_2;
18.}
19.
20./**
21.*获取现在时间
22.*
23.* @return返回短时间格式yyyy-MM-dd
24.*/
25.publicstaticDate getNowDateShort() {
26.Date currentTime =newDate();
27.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
28.String dateString = formatter.format(currentTime);
29.ParsePosition pos =newParsePosition(8);
30.Date currentTime_2 = formatter.parse(dateString, pos);
31.returncurrentTime_2;
32.}
33.
34./**
35.*获取现在时间
36.*
37.* @return返回字符串格式yyyy-MM-dd HH:mm:ss
38.*/
39.publicstaticString getStringDate() {
40.Date currentTime =newDate();
41.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
42.String dateString = formatter.format(currentTime);
43.returndateString;
44.}
45.
46./**
47.*获取现在时间
48.*
49.* @return返回短时间字符串格式yyyy-MM-dd
50.*/
51.publicstaticString getStringDateShort() {
52.Date currentTime =newDate();
53.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
54.String dateString = formatter.format(currentTime);
55.returndateString;
56.}
57.
58./**
59.*获取时间小时:分;秒HH:mm:ss
60.*
61.* @return
62.*/
63.publicstaticString getTimeShort() {
64.SimpleDateFormat formatter =newSimpleDateFormat("HH:mm:ss");
65.Date currentTime =newDate();
66.String dateString = formatter.format(currentTime);
67.returndateString;
68.}
69.
70./**
71.*将长时间格式字符串转换为时间yyyy-MM-dd HH:mm:ss
72.*
73.* @param strDate
74.* @return
75.*/
76.publicstaticDate strToDateLong(String strDate) {
77.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
78.ParsePosition pos =newParsePosition(0);
79.Date strtodate = formatter.parse(strDate, pos);
80.returnstrtodate;
81.}
82.
83./**
84.*将长时间格式时间转换为字符串yyyy-MM-dd HH:mm:ss
85.*
86.* @param dateDate
87.* @return
88.*/
89.publicstaticString dateToStrLong(java.util.Date dateDate) {
90.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
91.String dateString = formatter.format(dateDate);
92.returndateString;
93.}
94.
95./**
96.*将短时间格式时间转换为字符串yyyy-MM-dd
97.*
98.* @param dateDate
99.* @param k
100.* @return
101.*/
102.publicstaticString dateToStr(java.util.Date dateDate) {
103.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
104.String dateString = formatter.format(dateDate);
105.returndateString;
106.}
107.
108./**
109.*将短时间格式字符串转换为时间yyyy-MM-dd
110.*
111.* @param strDate
112.* @return
113.*/
114.publicstaticDate strToDate(String strDate) {
115.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
116.ParsePosition pos =newParsePosition(0);
117.Date strtodate = formatter.parse(strDate, pos);
118.returnstrtodate;
119.}
120.
121./**
122.*得到现在时间
123.*
124.* @return
125.*/
126.publicstaticDate getNow() {
127.Date currentTime =newDate();
128.returncurrentTime;
129.}
130.
131./**
132.*提取一个月中的最后一天
133.*
134.* @param day
135.* @return
136.*/
137.publicstaticDate getLastDate(longday) {
138.Date date =newDate();
139.longdate_3_hm = date.getTime() -3600000*34* day;
140.Date date_3_hm_date =newDate(date_3_hm);
141.returndate_3_hm_date;
142.}
143.
144./**
145.*得到现在时间
146.*
147.* @return字符串yyyyMMdd HHmmss
148.*/
149.publicstaticString getStringToday() {
150.Date currentTime =newDate();
151.SimpleDateFormat formatter =newSimpleDateFormat("yyyyMMdd HHmmss");
152.String dateString = formatter.format(currentTime);
153.returndateString;
154.}
155.
156./**
157.*得到现在小时
158.*/
159.publicstaticString getHour() {
160.Date currentTime =newDate();
161.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
162.String dateString = formatter.format(currentTime);
163.String hour;
164.hour = dateString.substring(11,13);
165.returnhour;
166.}
167.
168./**
169.*得到现在分钟
170.*
171.* @return
172.*/
173.publicstaticString getTime() {
174.Date currentTime =newDate();
175.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
176.String dateString = formatter.format(currentTime);
177.String min;
178.min = dateString.substring(14,16);
179.returnmin;
180.}
181.
182./**
183.*根据用户传入的时间表示格式,返回当前时间的格式如果是yyyyMMdd,注意字母y不能大写。
184.*
185.* @param sformat
186.* yyyyMMddhhmmss
187.* @return
188.*/
189.publicstaticString getUserDate(String sformat) {
190.Date currentTime =newDate();
191.SimpleDateFormat formatter =newSimpleDateFormat(sformat);
192.String dateString = formatter.format(currentTime);
193.returndateString;
194.}
195.
196./**
197.*二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟
198.*/
199.publicstaticString getTwoHour(String st1, String st2) {
200.String[] kk =null;
201.String[] jj =null;
202.kk = st1.split(":");
203.jj = st2.split(":");
204.if(Integer.parseInt(kk[0])
205.return"0";
206.else{
207.doubley = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) /60;
208.doubleu = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) /60;
209.if((y - u) >0)
210.returny - u +"";
211.else
212.return"0";
213.}
214.}
215.
216./**
217.*得到二个日期间的间隔天数
218.*/
219.publicstaticString getTwoDay(String sj1, String sj2) {
220.SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");
221.longday =0;
222.try{
223.java.util.Date date = myFormatter.parse(sj1);
224.java.util.Date mydate = myFormatter.parse(sj2);
225.day = (date.getTime() - mydate.getTime()) / (24*60*60*1000);
226.}catch(Exception e) {
227.return"";
228.}
229.returnday +"";
230.}
231.
232./**
233.*时间前推或后推分钟,其中JJ表示分钟.
234.*/
235.publicstaticString getPreTime(String sj1, String jj) {
236.SimpleDateFormat format =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
237.String mydate1 ="";
238.try{
239.Date date1 = format.parse(sj1);
240.longTime = (date1.getTime() /1000) + Integer.parseInt(jj) *60;
241.date1.setTime(Time *1000);
242.mydate1 = format.format(date1);
243.}catch(Exception e) {
244.}
245.returnmydate1;
246.}
247.
248./**
249.*得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
250.*/
251.publicstaticString getNextDay(String nowdate, String delay) {
252.try{
253.SimpleDateFormat format =newSimpleDateFormat("yyyy-MM-dd");
254.String mdate ="";
255.Date d = strToDate(nowdate);
256.longmyTime = (d.getTime() /1000) + Integer.parseInt(delay) *24*60*60;
257.d.setTime(myTime *1000);
258.mdate = format.format(d);
259.returnmdate;
260.}catch(Exception e){
261.return"";
262.}
263.}
264.
265./**
266.*判断是否润年
267.*
268.* @param ddate
269.* @return
270.*/
271.publicstaticbooleanisLeapYear(String ddate) {
272.
273./**
274.*详细设计:1.被400整除是闰年,否则:2.不能被4整除则不是闰年3.能被4整除同时不能被100整除则是闰年
275.* 3.能被4整除同时能被100整除则不是闰年
276.*/
277.Date d = strToDate(ddate);
278.GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
279.gc.setTime(d);
280.intyear = gc.get(Calendar.YEAR);
281.if((year %400) ==0)
282.returntrue;
283.elseif((year %4) ==0) {
284.if((year %100) ==0)
285.returnfalse;
286.else
287.returntrue;
288.}else
289.returnfalse;
290.}
291.
292./**
293.*返回美国时间格式26 Apr 2006
294.*
295.* @param str
296.* @return
297.*/
298.publicstaticString getEDate(String str) {
299.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
300.ParsePosition pos =newParsePosition(0);
301.Date strtodate = formatter.parse(str, pos);
302.String j = strtodate.toString();
303.String[] k = j.split(" ");
304.returnk[2] + k[1].toUpperCase() + k[5].substring(2,4);
305.}
306.
307./**
308.*获取一个月的最后一天
309.*
310.* @param dat
311.* @return
312.*/
313.publicstaticString getEndDateOfMonth(String dat) {// yyyy-MM-dd
314.String str = dat.substring(0,8);
315.String month = dat.substring(5,7);
316.intmon = Integer.parseInt(month);
317.if(mon ==1|| mon ==3|| mon ==5|| mon ==7|| mon ==8|| mon ==10|| mon ==12) {
318.str +="31";
319.}elseif(mon ==4|| mon ==6|| mon ==9|| mon ==11) {
320.str +="30";
321.}else{
322.if(isLeapYear(dat)) {
323.str +="29";
324.}else{
325.str +="28";
326.}
327.}
328.returnstr;
329.}
330.
331./**
332.*判断二个时间是否在同一个周
333.*
334.* @param date1
335.* @param date2
336.* @return
337.*/
338.publicstaticbooleanisSameWeekDates(Date date1, Date date2) {
339.Calendar cal1 = Calendar.getInstance();
340.Calendar cal2 = Calendar.getInstance();
341.cal1.setTime(date1);
342.cal2.setTime(date2);
343.intsubYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
344.if(0== subYear) {
345.if(cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
346.returntrue;
347.}elseif(1== subYear &&11== cal2.get(Calendar.MONTH)) {
348.//如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
349.if(cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
350.returntrue;
351.}elseif(-1== subYear &&11== cal1.get(Calendar.MONTH)) {
352.if(cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
353.returntrue;
354.}
355.returnfalse;
356.}
357.
358./**
359.*产生周序列,即得到当前时间所在的年度是第几周
360.*
361.* @return
362.*/
363.publicstaticString getSeqWeek() {
364.Calendar c = Calendar.getInstance(Locale.CHINA);
365.String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
366.if(week.length() ==1)
367.week ="0"+ week;
368.String year = Integer.toString(c.get(Calendar.YEAR));
369.returnyear + week;
370.}
371.
372./**
373.*获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
374.*
375.* @param sdate
376.* @param num
377.* @return
378.*/
379.publicstaticString getWeek(String sdate, String num) {
380.//再转换为时间
381.Date dd = VeDate.strToDate(sdate);
382.Calendar c = Calendar.getInstance();
383.c.setTime(dd);
384.if(num.equals("1"))//返回星期一所在的日期
385.c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
386.elseif(num.equals("2"))//返回星期二所在的日期
387.c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
388.elseif(num.equals("3"))//返回星期三所在的日期
389.c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
390.elseif(num.equals("4"))//返回星期四所在的日期
391.c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
392.elseif(num.equals("5"))//返回星期五所在的日期
393.c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
394.elseif(num.equals("6"))//返回星期六所在的日期
395.c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
396.elseif(num.equals("0"))//返回星期日所在的日期
397.c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
398.returnnewSimpleDateFormat("yyyy-MM-dd").format(c.getTime());
399.}
400.
401./**
402.*根据一个日期,返回是星期几的字符串
403.*
404.* @param sdate
405.* @return
406.*/
407.publicstaticString getWeek(String sdate) {
408.//再转换为时间
409.Date date = VeDate.strToDate(sdate);
410.Calendar c = Calendar.getInstance();
411.c.setTime(date);
412.// int hour=c.get(Calendar.DAY_OF_WEEK);
413.// hour中存的就是星期几了,其范围1~7
414.// 1=星期日7=星期六,其他类推
415.returnnewSimpleDateFormat("EEEE").format(c.getTime());
416.}
417.publicstaticString getWeekStr(String sdate){
418.String str ="";
419.str = VeDate.getWeek(sdate);
420.if("1".equals(str)){
421.str ="星期日";
422.}elseif("2".equals(str)){
423.str ="星期一";
424.}elseif("3".equals(str)){
425.str ="星期二";
426.}elseif("4".equals(str)){
427.str ="星期三";
428.}elseif("5".equals(str)){
429.str ="星期四";
430.}elseif("6".equals(str)){
431.str ="星期五";
432.}elseif("7".equals(str)){
433.str ="星期六";
434.}
435.returnstr;
436.}
437.
438./**
439.*两个时间之间的天数
440.*
441.* @param date1
442.* @param date2
443.* @return
444.*/
445.publicstaticlonggetDays(String date1, String date2) {
446.if(date1 ==null|| date1.equals(""))
447.return0;
448.if(date2 ==null|| date2.equals(""))
449.return0;
450.//转换为标准时间
451.SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");
452.java.util.Date date =null;
453.java.util.Date mydate =null;
454.try{
455.date = myFormatter.parse(date1);
456.mydate = myFormatter.parse(date2);
457.}catch(Exception e) {
458.}
459.longday = (date.getTime() - mydate.getTime()) / (24*60*60*1000);
460.returnday;
461.}
462.
463./**
464.*形成如下的日历,根据传入的一个时间返回一个结构星期日星期一星期二星期三星期四星期五星期六下面是当月的各个时间
465.*此函数返回该日历第一行星期日所在的日期
466.*
467.* @param sdate
468.* @return
469.*/
470.publicstaticString getNowMonth(String sdate) {
471.//取该时间所在月的一号
472.sdate = sdate.substring(0,8) +"01";
473.
474.//得到这个月的1号是星期几
475.Date date = VeDate.strToDate(sdate);
476.Calendar c = Calendar.getInstance();
477.c.setTime(date);
478.intu = c.get(Calendar.DAY_OF_WEEK);
479.String newday = VeDate.getNextDay(sdate, (1- u) +"");
480.returnnewday;
481.}
482.
483./**
484.*取得数据库主键生成格式为yyyymmddhhmmss+k位随机数
485.*
486.* @param k
487.*表示是取几位随机数,可以自己定
488.*/
489.
490.publicstaticString getNo(intk) {
491.
492.returngetUserDate("yyyyMMddhhmmss") + getRandom(k);
493.}
494.
495./**
496.*返回一个随机数
497.*
498.* @param i
499.* @return
500.*/
501.publicstaticString getRandom(inti) {
502.Random jjj =newRandom();
503.// int suiJiShu = jjj.nextInt(9);
504.if(i ==0)
505.return"";
506.String jj ="";
507.for(intk =0; k
508.jj = jj + jjj.nextInt(9);
509.}
510.returnjj;
511.}
512.
513./**
514.*
515.* @param args
516.*/
517.publicstaticbooleanRightDate(String date) {
518.
519.SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
520.;
521.if(date ==null)
522.returnfalse;
523.if(date.length() >10) {
524.sdf =newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
525.}else{
526.sdf =newSimpleDateFormat("yyyy-MM-dd");
527.}
528.try{
529.sdf.parse(date);
530.}catch(ParseException pe) {
531.returnfalse;
532.}
533.returntrue;
534.}
535.
536./***************************************************************************
537.* //nd=1表示返回的值中包含年度//yf=1表示返回的值中包含月份//rq=1表示返回的值中包含日期//format表示返回的格式1
538.*以年月日中文返回2以横线-返回// 3以斜线/返回4以缩写不带其它符号形式返回// 5以点号.返回
539.**************************************************************************/
540.publicstaticString getStringDateMonth(String sdate, String nd, String yf, String rq, String format) {
541.Date currentTime =newDate();
542.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
543.String dateString = formatter.format(currentTime);
544.String s_nd = dateString.substring(0,4);//年份
545.String s_yf = dateString.substring(5,7);//月份
546.String s_rq = dateString.substring(8,10);//日期
547.String sreturn ="";
548.roc.util.MyChar mc =newroc.util.MyChar();
549.if(sdate ==null|| sdate.equals("") || !mc.Isdate(sdate)) {//处理空值情况
550.if(nd.equals("1")) {
551.sreturn = s_nd;
552.//处理间隔符
553.if(format.equals("1"))
554.sreturn = sreturn +"年";
555.elseif(format.equals("2"))
556.sreturn = sreturn +"-";
557.elseif(format.equals("3"))
558.sreturn = sreturn +"/";
559.elseif(format.equals("5"))
560.sreturn = sreturn +".";
561.}
562.//处理月份
563.if(yf.equals("1")) {
564.sreturn = sreturn + s_yf;
565.if(format.equals("1"))
566.sreturn = sreturn +"月";
567.elseif(format.equals("2"))
568.sreturn = sreturn +"-";
569.elseif(format.equals("3"))
570.sreturn = sreturn +"/";
571.elseif(format.equals("5"))
572.sreturn = sreturn +".";
573.}
574.//处理日期
575.if(rq.equals("1")) {
576.sreturn = sreturn + s_rq;
577.if(format.equals("1"))
578.sreturn = sreturn +"日";
579.}
580.}else{
581.//不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式
582.sdate = roc.util.RocDate.getOKDate(sdate);
583.s_nd = sdate.substring(0,4);//年份
584.s_yf = sdate.substring(5,7);//月份
585.s_rq = sdate.substring(8,10);//日期
586.if(nd.equals("1")) {
587.sreturn = s_nd;
588.//处理间隔符
589.if(format.equals("1"))
590.sreturn = sreturn +"年";
591.elseif(format.equals("2"))
592.sreturn = sreturn +"-";
593.elseif(format.equals("3"))
594.sreturn = sreturn +"/";
595.elseif(format.equals("5"))
596.sreturn = sreturn +".";
597.}
598.//处理月份
599.if(yf.equals("1")) {
600.sreturn = sreturn + s_yf;
601.if(format.equals("1"))
602.sreturn = sreturn +"月";
603.elseif(format.equals("2"))
604.sreturn = sreturn +"-";
605.elseif(format.equals("3"))
606.sreturn = sreturn +"/";
607.elseif(format.equals("5"))
608.sreturn = sreturn +".";
609.}
610.//处理日期
611.if(rq.equals("1")) {
612.sreturn = sreturn + s_rq;
613.if(format.equals("1"))
614.sreturn = sreturn +"日";
615.}
616.}
617.returnsreturn;
618.}
619.
620.publicstaticString getNextMonthDay(String sdate,intm) {
621.sdate = getOKDate(sdate);
622.intyear = Integer.parseInt(sdate.substring(0,4));
623.intmonth = Integer.parseInt(sdate.substring(5,7));
624.month = month + m;
625.if(month <0) {
626.month = month +12;
627.year = year -1;
628.}elseif(month >12) {
629.month = month -12;
630.year = year +1;
631.}
632.String smonth ="";
633.if(month <10)
634.smonth ="0"+ month;
635.else
636.smonth =""+ month;
637.returnyear +"-"+ smonth +"-10";
638.}
639.
640.publicstaticString getOKDate(String sdate) {
641.if(sdate ==null|| sdate.equals(""))
642.returngetStringDateShort();
643.
644.if(!VeStr.Isdate(sdate)) {
645.sdate = getStringDateShort();
646.}
647.//将“/”转换为“-”
648.sdate = VeStr.Replace(sdate,"/","-");
649.//如果只有8位长度,则要进行转换
650.if(sdate.length() ==8)
651.sdate = sdate.substring(0,4) +"-"+ sdate.substring(4,6) +"-"+ sdate.substring(6,8);
652.SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");
653.ParsePosition pos =newParsePosition(0);
654.Date strtodate = formatter.parse(sdate, pos);
655.String dateString = formatter.format(strtodate);
656.returndateString;
657.}
658.
659.publicstaticvoidmain(String[] args)throwsException {
660.try{
661.//System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09")));
662.}catch(Exception e) {
663.thrownewException();
664.}
665.//System.out.println("sss");
666.}
667.}