日期时间操作的工具类

  1 /**
  2  * 对日期时间中的相关方法进行分装,主要包括了获取当前时间,已经当前时间中运算关系等方法
  3  */
  4 public class DateTime {
  5
  6     final static String datePattern = "yyyy-MM-dd HH:mm:ss";
  7     final static String dateonlyPattern = "yyyy-MM-dd";
  8
  9     final static SimpleDateFormat sf = new SimpleDateFormat(datePattern);
 10     final static SimpleDateFormat dateonlysf = new SimpleDateFormat(dateonlyPattern);
 11     // 时间对应的long值
 12     long nowtime;
 13
 14     /**
 15      * 以当前系统时间构造DateTime对象
 16      *
 17      */
 18     public DateTime() {
 19         nowtime = System.currentTimeMillis();
 20     }
 21
 22     /**
 23      * 以指定时间构造DateTime对象,如果指定的时间不符合格式,将使用 系统当前时间构造对象
 24      *
 25      * @param time
 26      *            时间格式为yyyy-MM-dd HH:mm:ss的字符串
 27      */
 28     public DateTime(String time) {
 29         this(time, "yyyy-MM-dd HH:mm:ss");
 30     }
 31
 32     /**
 33      * 以指定时间和指定时间格式构造DateTime对象. 如果指定的时间不符合格式,将使用系统当前时间构造对象
 34      *
 35      * @param time
 36      *            指定的时间
 37      * @param timePattern
 38      *            指定的日间格式
 39      */
 40     public DateTime(String time, String timePattern) {
 41         try {
 42             SimpleDateFormat sdf = new SimpleDateFormat(timePattern);
 43             Date d = sdf.parse(time);
 44             nowtime = d.getTime();
 45         } catch (ParseException e) {
 46             nowtime = System.currentTimeMillis();
 47         }
 48     }
 49
 50     /**
 51      * 取回系统当前时间 时间格式yyyy-MM-dd hh:mm:ss
 52      *
 53      * @return yyyy-MM-dd hh:mm:ss格式的时间字符串
 54      */
 55     public String getNowTime() {
 56         String retValue = null;
 57         retValue = sf.format(new Date(nowtime));
 58         return retValue;
 59     }
 60
 61     /**
 62      * 按指定日期、时间格式返回当前日期
 63      *
 64      * @param datePattern
 65      *            格式字符串
 66      * @return 格式化的日期、时间字符串
 67      */
 68     public String getNowTime(String datePattern) {
 69         String retValue = null;
 70         SimpleDateFormat sf = new SimpleDateFormat(datePattern);
 71         retValue = sf.format(new Date(nowtime));
 72         return retValue;
 73     }
 74
 75     /**
 76      * 返回4位的年份,如‘2004‘
 77      *
 78      * @return 年
 79      */
 80     public String getYear() {
 81         return getNowTime("yyyy");
 82     }
 83
 84     /**
 85      * 返回月份. 一位的月份数字,如8月将返回8
 86      *
 87      * @return 月份 如果8月返回8,12月返回12
 88      */
 89     public String getMonth() {
 90
 91         return getNowTime("M");
 92     }
 93
 94     /**
 95      * 返回一个月中的第几天
 96      *
 97      * @return 天 一位的天数,如当前是4月1日将返回‘1‘
 98      */
 99     public String getDay() {
100         return getNowTime("d");
101     }
102
103     /**
104      * 返回24小时制的小时
105      *
106      * @return 小时
107      */
108     public String getHour() {
109         return getNowTime("HH");
110     }
111
112     /**
113      * 返回分钟
114      *
115      * @return 分钟 一位的分钟数
116      */
117     public String getMinute() {
118         return getNowTime("m");
119     }
120
121     /**
122      * 返回秒
123      *
124      * @return 秒 一位的秒数
125      */
126     public String getSecond() {
127         return getNowTime("s");
128     }
129
130     /**
131      * 返回星期中名称
132      *
133      * @return 如星期二将返回"星期二"
134      */
135     public String getDayInWeek() {
136         return getNowTime("E");
137     }
138
139     /**
140      * 返回星期几,
141      * @return 数字星期几,如星期二则返回2,星期天则返回0
142      */
143     public String getNumInWeek(){
144         String dayInWeek = this.getDayInWeek();
145         dayInWeek = dayInWeek.replace("星期", "");
146
147         char[] chars = dayInWeek.toCharArray();
148         for (int i = 0; i < chars.length; i++) {
149             switch (chars[i]) {
150             case ‘一‘:
151                 chars[i] = ‘1‘;
152                 break;
153             case ‘二‘:
154                 chars[i] = ‘2‘;
155                 break;
156             case ‘三‘:
157                 chars[i] = ‘3‘;
158                 break;
159             case ‘四‘:
160                 chars[i] = ‘4‘;
161                 break;
162             case ‘五‘:
163                 chars[i] = ‘5‘;
164                 break;
165             case ‘六‘:
166                 chars[i] = ‘6‘;
167                 break;
168             case ‘日‘:
169                 chars[i] = ‘0‘;
170                 break;
171             }
172         }
173         return new String(chars);
174     }
175
176     /**
177      * 只返回日期 如2004-08-12.月份和日期都是两位,不足的在前面补0
178      *
179      * @return 日期
180      */
181     public String getDateOnly() {
182         return getNowTime("yyyy-MM-dd");
183     }
184
185
186
187     /**
188      * 只返回时间 如12:20:30.时间为24小时制,分钟和秒数都是两位,不足补0
189      *
190      * @return 时间
191      */
192     public String getTimeOnly() {
193         return getNowTime("HH:mm:ss");
194     }
195
196     /**
197      * 调整年份
198      *
199      * @param i
200      *            要调整的基数,正表示加,负表示减
201      */
202     public void adjustYear(int i) {
203         adjustTime(i, 0, 0, 0, 0, 0);
204     }
205
206     /**
207      * 调整月份
208      *
209      * @param i
210      *            要调整的基数,正表示加,负表示减
211      */
212     public void adjustMonth(int i) {
213         adjustTime(0, i, 0, 0, 0, 0);
214     }
215
216     /**
217      * 调整天数
218      *
219      * @param i
220      *            要调整的基数,正表示加,负表示减
221      */
222     public void adjustDay(int i) {
223         adjustTime(0, 0, i, 0, 0, 0);
224     }
225
226     /**
227      * 调整小时
228      *
229      * @param i
230      *            要调整的基数,正表示加,负表示减
231      */
232     public void adjustHour(int i) {
233         adjustTime(0, 0, 0, i, 0, 0);
234     }
235
236     /**
237      * 调整分数
238      *
239      * @param i
240      *            要调整的基数,正表示加,负表示减
241      */
242     public void adjustMinute(int i) {
243         adjustTime(0, 0, 0, 0, i, 0);
244     }
245
246     /**
247      * 调整秒数
248      *
249      * @param i
250      *            要调整的基数,正表示加,负表示减
251      */
252     public void adjustSecond(int i) {
253         adjustTime(0, 0, 0, 0, 0, i);
254     }
255
256     /**
257      * 调整时间
258      *
259      * @param y
260      *            年
261      * @param m
262      *            月
263      * @param d
264      *            日
265      * @param h
266      *            小时
267      * @param mm
268      *            分钟
269      * @param ss
270      *            秒
271      */
272     protected void adjustTime(int y, int m, int d, int h, int mm, int ss) {
273         GregorianCalendar cal = new GregorianCalendar();
274         cal.setTimeInMillis(nowtime);
275         cal.add(Calendar.YEAR, y);
276         cal.add(Calendar.MONTH, m);
277         cal.add(Calendar.DAY_OF_MONTH, d);
278         cal.add(Calendar.HOUR_OF_DAY, h);
279         cal.add(Calendar.MINUTE, mm);
280         cal.add(Calendar.SECOND, ss);
281         nowtime = cal.getTimeInMillis();
282     }
283
284     /**
285      * 返回当前日期.
286      *
287      * @return yyyy-MM-dd HH:mm:ss格式的日期/时间
288      */
289     public static String getNowDateTime() {
290         DateTime dt = new DateTime();
291         return dt.getNowTime();
292     }
293
294     /**
295      * 按指定格式返回当前日期.
296      *
297      * @param pattern
298      *            时间格式
299      * @return 格式化的日期/时间
300      */
301     public static String getNowDateTime(String pattern) {
302         DateTime dt = new DateTime();
303         return dt.getNowTime(pattern);
304     }
305
306     /**
307      * 返回中文格式的日期.如"二零零零年八月六日星期五18点4分"
308      *
309      * @return String
310      */
311     public static String getNowDateTimeChinese() {
312         DateTime dt = new DateTime();
313         return getNowDateTimeChinese("yyyy年M月d日E") + dt.getNowTime("H点mm分");
314     }
315
316     /**
317      * 根据自定义输出中文日期格式输出字符串。
318      *
319      * @param pattern
320      *            日期、时间格式. ‘yyyy年MM月dd日E‘将输出‘2004年8月16日星期六‘
321      * @return 时间、日期字符串
322      */
323     public static String getNowDateTimeChinese(String pattern) {
324         DateTime dt = new DateTime();
325         return numberToChinese(dt.getNowTime(pattern));
326     }
327
328     /**
329      * 返回中文的数字,把12345678转成‘零‘,‘一‘,‘二‘,‘三‘,‘四‘,‘五‘,‘六‘,‘七‘,‘八‘,‘九‘
330      *
331      * @param n
332      *            要转的字符串
333      * @return 转换后的字符串
334      */
335     public static String numberToChinese(String n) {
336         char[] chars = n.toCharArray();
337         for (int i = 0; i < chars.length; i++) {
338             switch (chars[i]) {
339             case ‘1‘:
340                 chars[i] = ‘一‘;
341                 break;
342             case ‘2‘:
343                 chars[i] = ‘二‘;
344                 break;
345             case ‘3‘:
346                 chars[i] = ‘三‘;
347                 break;
348             case ‘4‘:
349                 chars[i] = ‘四‘;
350                 break;
351             case ‘5‘:
352                 chars[i] = ‘五‘;
353                 break;
354             case ‘6‘:
355                 chars[i] = ‘六‘;
356                 break;
357             case ‘7‘:
358                 chars[i] = ‘七‘;
359                 break;
360             case ‘8‘:
361                 chars[i] = ‘八‘;
362                 break;
363             case ‘9‘:
364                 chars[i] = ‘九‘;
365                 break;
366             case ‘0‘:
367                 chars[i] = ‘零‘;
368                 break;
369             }
370         }
371         return new String(chars);
372     }
373
374     /**
375      * 按指定格式转换输出指定的日期
376      *
377      * @param date
378      *            要输出的日期
379      * @param datePattern
380      *            要输出的时间格式
381      * @return 格式化后的字符串
382      */
383     public static String getTime(Date date, String datePattern) {
384         String retValue = null;
385         SimpleDateFormat sf = new SimpleDateFormat(datePattern);
386         retValue = sf.format(date);
387         return retValue;
388     }
389
390     /**
391      * 把字符串格式化成相应的日期格式
392      *
393      * @param s 日期字符串格式 String
394      * @param datePattern 日期模式 String
395      * @return 返回格式化后的日期
396      */
397     public static Date parseDate(String s, String datePattern) {
398
399         s = s.replaceAll(" ", "");
400         if (s == null || s.equals(""))
401             return null;
402
403         Date d = null;
404         SimpleDateFormat sf = new SimpleDateFormat(datePattern);
405         try {
406             d = sf.parse(s);
407         } catch (ParseException e) {
408         }
409         return d;
410     }
411
412     /**
413      * 把两个时间进行比较得出他们的间隔的天数,如果比较时间大于标准时间,则返回负的天数
414      *
415      * @param compareTime 待比较的时间 String
416      *
417      * @param standardTime 标准的时间 String
418      *
419      * @return 返回比较的结果 int
420      */
421     public int getIntervalDays(String compareTime,String standardTime){
422         int result = 0;
423         Date compareDate = this.parseDate(compareTime, "yyyy-MM-dd");
424         Date standardDate = this.parseDate(standardTime, "yyyy-MM-dd");
425         long sl = compareDate.getTime();
426         long el = standardDate.getTime();
427         long ei = el-sl;
428         result = (int)((ei)/(1000*60*60*24));
429         //cal.set
430         return result;
431     }
432
433     /**
434      * 返回字符串
435      *
436      * @see java.lang.Object#toString()
437      */
438     public String toString() {
439         return getNowTime();
440     }
441     /**
442      *
443      * 功能说明: 把 2012-4-25转化成 二〇一二年〇四月二十五日
444      * @param 字符串 格式 yyyy-mm-dd
445      * @author chh
446      * @Apr 19, 2012
447      */
448     public  String dateToCN(String  srcStr) {
449         Date date = null;
450         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
451         try {
452             date = sf.parse(srcStr);
453         } catch (ParseException e) {
454         }
455         if (null == date || "".equals(date)) {
456             return null;
457         }
458         String[] CN = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
459         String str = "十";
460
461 //        String[] CN = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
462 //        String str = "拾";
463
464         Calendar calendar = Calendar.getInstance();
465         calendar.setTime(date);
466
467         StringBuffer cn = new StringBuffer();
468
469         String year = String.valueOf(calendar.get(Calendar.YEAR));
470
471         for (int i = 0; i < year.length(); i++) {
472             cn.append(CN[year.charAt(i) - 48]);
473         }
474
475         cn.append("年");
476
477         int t1,t2;
478
479         int mon = calendar.get(Calendar.MONTH) + 1;
480
481         t1 = mon/10;
482         t2 = mon%10;
483
484         if(t1 < 10){
485             if(t1 != 0){
486                 cn.append(CN[t1]);
487                 cn.append(str);
488             }else{
489                 cn.append(CN[0]);
490             }
491         }
492
493         if(t2 < 10 && t2 != 0){
494             cn.append(CN[t2]);
495         }
496
497         cn.append("月");
498
499         int day = calendar.get(Calendar.DAY_OF_MONTH);
500
501         t1 = day/10;
502         t2 = day%10;
503
504         if(t1 < 10){
505             if(t1 != 0){
506                 //一十五 只显示 十五
507                 if(t1!=1){
508                     cn.append(CN[t1]);
509                 }
510                 cn.append(str);
511             }else{
512                 cn.append(CN[0]);
513             }
514         }
515
516         if(t2 < 10 && t2 != 0){
517             cn.append(CN[t2]);
518         }
519
520         cn.append("日");
521
522         return cn.toString();
523     }
524     /**
525      *
526      * 功能说明:把 2012-4-25转化成 贰零壹贰年零肆月拾伍日
527      * @param 字符串 格式 yyyy-mm-dd
528      * @author chh
529      * @Apr 19, 2012
530      */
531     public  String dateToUppercaseCN(String  srcStr) {
532         Date date = null;
533         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
534         try {
535             date = sf.parse(srcStr);
536         } catch (ParseException e) {
537         }
538         if (null == date || "".equals(date)) {
539             return null;
540         }
541
542        String[] CN = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
543         String str = "拾";
544
545         Calendar calendar = Calendar.getInstance();
546         calendar.setTime(date);
547
548         StringBuffer cn = new StringBuffer();
549
550         String year = String.valueOf(calendar.get(Calendar.YEAR));
551
552         for (int i = 0; i < year.length(); i++) {
553             cn.append(CN[year.charAt(i) - 48]);
554         }
555
556         cn.append("年");
557
558         int t1,t2;
559
560         int mon = calendar.get(Calendar.MONTH) + 1;
561
562         t1 = mon/10;
563         t2 = mon%10;
564
565         if(t1 < 10){
566             if(t1 != 0){
567                 cn.append(CN[t1]);
568                 cn.append(str);
569             }else{
570                 cn.append(CN[0]);
571             }
572         }
573
574         if(t2 < 10 && t2 != 0){
575             cn.append(CN[t2]);
576         }
577
578         cn.append("月");
579
580         int day = calendar.get(Calendar.DAY_OF_MONTH);
581
582         t1 = day/10;
583         t2 = day%10;
584
585         if(t1 < 10){
586             if(t1 != 0){
587                 //一十五 只显示 十五
588                 if(t1!=1){
589                     cn.append(CN[t1]);
590                 }
591                 cn.append(str);
592             }else{
593                 cn.append(CN[0]);
594             }
595         }
596
597         if(t2 < 10 && t2 != 0){
598             cn.append(CN[t2]);
599         }
600
601         cn.append("日");
602
603         return cn.toString();
604     }
605
606
607
608     /**
609      * 获得本周的第一天,周一
610      * add by yuxiubao
611      * @return String
612      */
613     public String getCurrentWeekDayStartTime() {
614         Calendar c = Calendar.getInstance();
615         try {
616             int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;
617             c.add(Calendar.DATE, -weekday);
618             c.setTime(sf.parse(sf.format(c.getTime())));
619         } catch (Exception e) {
620             e.printStackTrace();
621         }
622         return dateonlysf.format(c.getTime());
623     }
624     /**
625      * 获得本周的最后一天,周日
626      * add by yuxiubao
627      * @return String
628      */
629     public String getCurrentWeekDayEndTime() {
630         Calendar c = Calendar.getInstance();
631         try {
632             int weekday = c.get(Calendar.DAY_OF_WEEK);
633             c.add(Calendar.DATE, 8 - weekday);
634             c.setTime(sf.parse(sf.format(c.getTime())));
635         } catch (Exception e) {
636             e.printStackTrace();
637         }
638         return dateonlysf.format(c.getTime());
639     }
640     /**
641      * 获得本月的开始日期
642      * add by yuxiubao
643      * @return
644      */
645     public String getCurrentMonthStartTime() {
646         Calendar c = Calendar.getInstance();
647         String resdate = null;
648         try {
649             c.set(Calendar.DATE, 1);
650             resdate = dateonlysf.format(c.getTime());
651         } catch (Exception e) {
652             e.printStackTrace();
653         }
654         return resdate;
655     }
656
657     /**
658      * 当前月的结束日期
659      * add by yuxiubao
660      * @return
661      */
662     public String getCurrentMonthEndTime() {
663         Calendar c = Calendar.getInstance();
664         String resdate = null;
665         try {
666             c.set(Calendar.DATE, 1);
667             c.add(Calendar.MONTH, 1);
668             c.add(Calendar.DATE, -1);
669             resdate = dateonlysf.format(c.getTime());
670         } catch (Exception e) {
671             e.printStackTrace();
672         }
673         return resdate;
674     }
675
676      /**
677      * 当前季度的开始日期
678      * add by yuxiubao
679      * @return String
680      */
681     public String getCurrentQuarterStartTime() {
682         Calendar c = Calendar.getInstance();
683         int currentMonth = c.get(Calendar.MONTH) + 1;
684         String resdate = null;
685         try {
686             if (currentMonth >= 1 && currentMonth <= 3)
687                 c.set(Calendar.MONTH, 0);
688             else if (currentMonth >= 4 && currentMonth <= 6)
689                 c.set(Calendar.MONTH, 3);
690             else if (currentMonth >= 7 && currentMonth <= 9)
691                 c.set(Calendar.MONTH, 4);
692             else if (currentMonth >= 10 && currentMonth <= 12)
693                 c.set(Calendar.MONTH, 9);
694             c.set(Calendar.DATE, 1);
695             resdate = dateonlysf.format(c.getTime());
696         } catch (Exception e) {
697             e.printStackTrace();
698         }
699         return resdate;
700     }
701
702     /**
703      * 当前季度的结束日期
704      * add by yuxiubao
705      * @return String
706      */
707     public String getCurrentQuarterEndTime() {
708         Calendar c = Calendar.getInstance();
709         int currentMonth = c.get(Calendar.MONTH) + 1;
710         String resdate = null;
711         try {
712             if (currentMonth >= 1 && currentMonth <= 3) {
713                 c.set(Calendar.MONTH, 2);
714                 c.set(Calendar.DATE, 31);
715             } else if (currentMonth >= 4 && currentMonth <= 6) {
716                 c.set(Calendar.MONTH, 5);
717                 c.set(Calendar.DATE, 30);
718             } else if (currentMonth >= 7 && currentMonth <= 9) {
719                 c.set(Calendar.MONTH, 8);
720                 c.set(Calendar.DATE, 30);
721             } else if (currentMonth >= 10 && currentMonth <= 12) {
722                 c.set(Calendar.MONTH, 11);
723                 c.set(Calendar.DATE, 31);
724             }
725             resdate = dateonlysf.format(c.getTime());
726         } catch (Exception e) {
727             e.printStackTrace();
728         }
729         return resdate;
730     }
731
732 }
时间: 2024-10-05 05:04:36

日期时间操作的工具类的相关文章

Java获取时间 时间计算 转换时间工具类

Java获取时间 时间计算 转换时间工具类 JAVA日期工具类 package com.mh.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 时间日期转换工具类 */ public class DateTimeUtil { /** *

Java日期时间操作源码示例大全

在研发闲暇时间,将开发过程比较重要的一些代码段做个记录,如下代码内容是关于Java日期时间操作示例大全的代码,应该是对小伙伴们有所用途. 日期类 import java.util.Calendar; public class VeDate { public static Date getNowDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd H

140926●日期时间操作、数学函数操作、表单验证

日期时间操作:var d=new Date();var d=new Date(1999,3,5); //时间是:1999-4-5 d.getFullYear();年d.getMonth();月(正常-1)d.getDate();天d.getDay();星期几d.getHours();d.getMinutes();d.getSeconds(); 数学函数操作:Math.ceil();Math.floor();Math.round();Math.random();Math.sqrt(); 表单验证:

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.

JavaScript日期时间操作

js日期操作: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate.getDate(); //获取当前日(1-31)myDate.getDay(); //获取当前星期X(0-6,0代表星期天)myDate.getTime(); //获取当前时间(从1970.1

List操作的工具类

1 /** 2 * <p>list操作的工具类</p> 3 */ 4 public class ListUtil { 5 /** 6 * 过滤掉list里面才重复项 7 * 8 * @param list 9 * @return List 10 */ 11 public static List<String> filterRepeat(List<String> list){ 12 int length = list.size(); 13 for(int i

Firebird日期时间操作

最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * from tableblob where extract(month from datetime)=12 and extract(year from datetime)>2007 查询不重复的(年份+月份)组合,datetime为timestamp字段 select distinct (extract(y

Java 借助poi操作Wold工具类

? Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作 这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用. 这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法.分享给大家学习下: Apache POI的组件: ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法.该API的组件列表如下 - POIFS(不良混淆实现文件系统) - 此组件是