1 import java.text.DateFormat;
2 import java.text.ParseException;
3 import java.text.SimpleDateFormat;
4 import java.util.Calendar;
5 import java.util.Date;
6 import java.util.GregorianCalendar;
7
8 public class Time {
9 /**
10 * 日期格式转换
11 */
12 public static String simpledateformat(Date date){
13 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
14 String dates="";
15 if(date!=null){
16 dates=sdf.format(date);
17 }
18 return dates;
19 }
20
21 /**
22 * long型时间转换成指定格式的时间类型
23 */
24 public static String longTimeToStrFormat(long time,String format){
25 Date date = new Date(time);
26 SimpleDateFormat formatter = new SimpleDateFormat(format);
27 String datetime = formatter.format(date);
28 return datetime;
29 }
30 /**
31 * 字符串型时间格式 转换成long型时间
32 */
33 public static long strTimeToLong(String time){
34 String format = "yyyy-MM-dd HH:mm:ss";
35 return strTimeToLong(time, format);
36 }
37 public static long strTimeToLong(String time,String format){
38 SimpleDateFormat sdf=new SimpleDateFormat(format);
39 long longTime = 0;
40 try {
41 longTime = sdf.parse(time).getTime();
42 } catch (ParseException e) {
43 e.printStackTrace();
44 }
45 return longTime;
46 }
47 /**
48 * 按指定格式返回当前时间
49 */
50 public static String getCurTimeFormat(String format){
51 Date date = new Date();
52 return getDateTimeFormat(date,format);
53 }
54 public static String getDateTimeFormat(Date date,String format){
55 SimpleDateFormat formatter = new SimpleDateFormat(format);
56 String datetime = formatter.format(date);
57 return datetime;
58 }
59 public static String getCurTimeFormat(){
60 return getCurTimeFormat("yyyy-MM-dd HH:mm:ss");
61 }
62 public static Date getDateAfterHourDefault(){
63 return getDateAfterHour(8);
64 }
65 public static Date getDateAfterHour(int hour){
66 Date date = new Date(System.currentTimeMillis() + hour*3600000);
67 return date;
68 }
69 public static String getCurTimeDesc(){
70 Calendar calendar = Calendar.getInstance();
72 StringBuffer sb = new StringBuffer();
73 sb.append("今天是");
74 sb.append(calendar.get(Calendar.YEAR));
75 sb.append("年");
76 sb.append(calendar.get(Calendar.MONTH)+1);
77 sb.append("月");
78 sb.append(calendar.get(Calendar.DAY_OF_MONTH));
79 sb.append("日");
80 sb.append(" 星期");
81 String week = "日";
82 switch (calendar.get(Calendar.DAY_OF_WEEK)) {
83 case 1:
84 week = "日";
85 break;
86 case 2:
87 week = "一";
88 break;
89 case 3:
90 week = "二";
91 break;
92 case 4:
93 week = "三";
94 break;
95 case 5:
96 week = "四";
97 break;
98 case 6:
99 week = "五";
100 break;
101 case 7:
102 week = "六";
103 break;
104 }
105 sb.append(week);
106 return sb.toString();
107 }
108 /**
109 * 获取特殊的日期
110 * firstday_week 本周第一天 lastday_week 本周最后一天
111 * firstday_lastweek 上周第一天 lastday_lastweek 上周最后一天
112 * firstday_month 本月第一天 lastday_month 本月最后一天
113 * firstday_season 本季度第一天 lastday_season本季度最后一天
114 */
115 public static String getDays(String keyvalue){
116 String date="";
117 DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
118 Calendar c = Calendar.getInstance();
119 // 默认时,每周第一天为星期日,需要更改一下
120 c.setFirstDayOfWeek(Calendar.MONDAY);
121 //本周的第一天
122 if(keyvalue.equals("firstday_week")){
123 c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
124 Date first = c.getTime();
125 date=format.format(first);
126 }
127 //本周的最后一天
128 if(keyvalue.equals("lastday_week")){
129 c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
130 Date last = c.getTime();
131 date=format.format(last);
132 }
133 //上周的第一天
134 if(keyvalue.equals("firstday_lastweek")){
135 c.add(Calendar.WEEK_OF_YEAR, -1); // back to last week
136 c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY );
137 Date beforefirst = c.getTime();
138 date=format.format(beforefirst);
139 }
140 //上周的最后一天
141 if(keyvalue.equals("lastday_lastweek")){
142 c.add(Calendar.WEEK_OF_YEAR, -1); // back to last week
143 c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
144 Date beforelast = c.getTime();
145 date=format.format(beforelast);
146 }
147 //本月的第一天
148 if(keyvalue.equals("firstday_month")){
149 c.set(Calendar.DAY_OF_MONTH, 1);
150 Date dayofmonth =c.getTime();
151 date=format.format(dayofmonth);
152 }
153 //本月的最后一天
154 if(keyvalue.equals("lastday_month")){
155
156 c.setTime(new Date());
157 c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
158 Date lastdayofmonth= c.getTime();
159 date=format.format(lastdayofmonth);
160 }
161 //本季度的第一天
162 if(keyvalue.equals("firstday_season")){
163 // 季度初
164 int year =c.get(Calendar.YEAR);
165 System.out.println(year);
166 int month = c.get(Calendar.MONTH) + 1;
167 System.out.println(month);
168 if(month>=1&&month<=3){
169 date=year+"-01-01";
170 }
171 if(month>=4&&month<=6){
172 date=year+"-04-01";
173 }
174 if(month>=7&&month<=9){
175 date=year+"-07-01";
176 }
177 if(month>=10&&month<=12){
178 date=year+"-10-01";
179 }
180 }
181 // 季度最后一天
182 if(keyvalue.equals("lastday_season")){
183 // 季度初
184 int year =c.get(Calendar.YEAR);
185 int month = c.get(Calendar.MONTH) + 1;
186 if(month>=1&&month<=3){
187 date=year+"-03-31";
188 }
189 if(month>=4&&month<=6){
190 date=year+"-06-30";
191 }
192 if(month>=7&&month<=9){
193 date=year+"-09-30";
194 }
195 if(month>=10&&month<=12){
196 date=year+"-12-31";
197 }
198 }
199 return date;
200 }
201 /**
202 * 判断一段时间内有多少个工作日 一周5天 不排除节假日
203 */
204 public static int getworkdaysfromperiodtime(String startdate,String enddate){
205 Calendar dayc1 = new GregorianCalendar();
206 Calendar dayc2 = new GregorianCalendar();
207 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
208 try {
209 Date daystart = df.parse(startdate);
210 Date dayend = df.parse(enddate);
211 dayc1.setTime(daystart); //设置calendar的日期
212 dayc2.setTime(dayend);
213 } catch (ParseException e) {
214 e.printStackTrace();
215 } //按照yyyy-MM-dd格式转换为日期
216 int days=0;
217 for (; dayc1.compareTo(dayc2) <= 0;) { //dayc1在dayc2之前就循环
218 //打印年月日
219 if(dayc1.get(Calendar.DAY_OF_WEEK)!=1&&dayc1.get(Calendar.DAY_OF_WEEK)!=7){
220 days++;
221 }
222 dayc1.add(Calendar.DAY_OF_YEAR, 1); //加1天
223 }
224 return days;
225 }
226 public static String lastdayofmonth(int year ,int month){
227 String firstday = "";
228 try {
229 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
230 return year+"-"+month+"-"+31+" 23:59:59";
231 }else if(month==4||month==6||month==9||month==11) {
232 return year+"-"+month+"-"+30+" 23:59:59";
233 }else if(month == 2){
234 return year+"-"+month+"-"+28+" 23:59:59";
235 }else{
236 return firstday;
237 }
238 } catch (Exception e) {
239 e.printStackTrace();
240 return firstday;
241 }
242 }
243 public static void main(String[] s){
244 Calendar calendar = Calendar.getInstance();
245 System.out.println(getCurTimeDesc());
246
247
248 String time = "2015-05-15";
249 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
250 long longTime = 0;
251 try {
252 longTime = sdf.parse(time).getTime();
253 } catch (ParseException e) {
254 e.printStackTrace();
255 }
256 System.out.println(longTime);
257 String date=getDays("firstday_week");
258
259 int days=getworkdaysfromperiodtime("2015-12-1","2015-12-31");
260 System.out.println(days+"天");
261 }
262
263
264
265 }