OSDN Git Service

import
[luz/luz.git] / luz2 / src / com / lavans / luz2 / commons / DateUtils.java
1 package com.lavans.luz2.commons;\r
2 \r
3 import java.text.SimpleDateFormat;\r
4 import java.util.Calendar;\r
5 import java.util.Date;\r
6 \r
7 import org.apache.commons.logging.Log;\r
8 import org.apache.commons.logging.LogFactory;\r
9 \r
10 public class DateUtils {\r
11         /** logger */\r
12         private static Log logger = LogFactory.getLog(DateUtils.class);\r
13 \r
14         /**\r
15          * 受け取ったDate型に日付演算した結果をDate型返す。\r
16          * dateがnullなら現在時刻から\r
17          * @param str\r
18          */\r
19         public static Date getDateAdd(Date date, int field, int add){\r
20                 Calendar cal =Calendar.getInstance();\r
21                 if(date!=null){\r
22                         cal.setTime(date);\r
23                 }\r
24                 cal.add(field, add);\r
25                 return cal.getTime();\r
26         }\r
27 \r
28         /**\r
29          * 文字列からDateを作成。\r
30          * パースできない場合はnull。\r
31          *\r
32          * @param dateStr\r
33          * @return\r
34          */\r
35         public static Date getDate(String dateStr){\r
36                 return getDate(dateStr, getFormat(dateStr));\r
37         }\r
38         /**\r
39          * yyyy/MM/dd形式の文字列からDate型を作成。\r
40          * 与えられた文字列を見てパース方法を判断する。\r
41          * @param str\r
42          * @return\r
43          */\r
44         private static final String FORMAT_DATE = "yyyy/MM/dd";\r
45         private static final String FORMAT_MIN  = "yyyy/MM/dd HH:mm";\r
46         private static final String FORMAT_MSEC = "yyyy/MM/dd HH:mm:ss";\r
47         private static final String FORMAT_SEC = "yyyy/MM/dd HH:mm:ss.SSS";\r
48         private static String getFormat(String str){\r
49                 str = str.trim();\r
50                 String result = null;\r
51                 if(str.contains(":")){\r
52                         // 時刻含む\r
53                         if(str.indexOf(":")==str.lastIndexOf(":")){\r
54                                 // コロンが一つなら\r
55                                 result = FORMAT_MIN;\r
56                         }else{\r
57                                 // コロンが二つなら\r
58                                 if(str.contains(".")){\r
59                                         // ミリ秒も含む\r
60                                         result = FORMAT_MSEC;\r
61                                 }else{\r
62                                         // 秒まで\r
63                                         result = FORMAT_SEC;\r
64                                 }\r
65                         }\r
66                 }else{\r
67                         result = FORMAT_DATE;\r
68                 }\r
69                 \r
70                 // yyyy/MM/ddのの他にもyyyy-MM-ddも使えるようにする\r
71                 if(str.length()>10){\r
72                         if(str.charAt(4)=='-' && str.charAt(6)=='-'){\r
73                                 FORMAT_DATE.replace("/", "-");\r
74                         }\r
75                 }\r
76                 \r
77                 return result;\r
78         }\r
79 \r
80         /**\r
81          * 指定された日付文字列とフォーマットでDate型を作成。\r
82          * @param dateStr\r
83          * @param dateFormat\r
84          * @return\r
85          */\r
86         public static Date getDate(String dateStr, String dateFormat){\r
87                 if(dateStr==null) return null;\r
88                 SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);\r
89                 Date date = null;\r
90                 try {\r
91                         date = sdf.parse(dateStr);\r
92                 } catch (Exception e) {\r
93                         logger.debug(e.getMessage());\r
94                 }\r
95 \r
96                 return date;\r
97         }\r
98 \r
99         /**\r
100          * 時刻を空にする\r
101          * パースできない場合はnull。\r
102          *\r
103          * @param dateStr\r
104          * @return\r
105          */\r
106         public static Date cleartime(Date date){\r
107                 Calendar cal = Calendar.getInstance();\r
108                 cal.setTime(date);\r
109                 cal.set(Calendar.HOUR_OF_DAY, 0);\r
110                 cal.set(Calendar.MINUTE, 0);\r
111                 cal.set(Calendar.SECOND, 0);\r
112                 cal.set(Calendar.MILLISECOND, 0);\r
113                 return cal.getTime();\r
114         }\r
115 }\r