标签:
1 package com.hefeng.test; 2 3 4 import java.text.DateFormat; 5 import java.text.ParsePosition; 6 import java.text.SimpleDateFormat; 7 import java.util.Calendar; 8 import java.util.Date; 9 import java.util.GregorianCalendar; 10 11 public class TimeTest { 12 //用来全局控制 上一周,本周,下一周的周数变化 13 private int weeks = 0; 14 private int MaxDate;//一月最大天数 15 private int MaxYear;//一年最大天数 16 17 18 /** 19 * @param args 20 */ 21 public static void main(String[] args) { 22 TimeTest tt = new TimeTest(); 23 System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd")); 24 System.out.println("获取本周一日期:"+tt.getMondayOFWeek()); 25 System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday()); 26 System.out.println("获取上周一日期:"+tt.getPreviousWeekday()); 27 System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday()); 28 System.out.println("获取下周一日期:"+tt.getNextMonday()); 29 System.out.println("获取下周日日期:"+tt.getNextSunday()); 30 System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd")); 31 System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth()); 32 System.out.println("获取本月最后一天日期:"+tt.getDefaultDay()); 33 System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst()); 34 System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd()); 35 System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst()); 36 System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd()); 37 System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst()); 38 System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd()); 39 System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst()); 40 System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd()); 41 System.out.println("获取明年第一天日期:"+tt.getNextYearFirst()); 42 System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd()); 43 System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11)); 44 System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29")); 45 } 46 47 48 /** 49 * 得到二个日期间的间隔天数 50 */ 51 public static String getTwoDay(String sj1, String sj2) { 52 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 53 long day = 0; 54 try { 55 java.util.Date date = myFormatter.parse(sj1); 56 java.util.Date mydate = myFormatter.parse(sj2); 57 day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 58 } catch (Exception e) { 59 return ""; 60 } 61 return day + ""; 62 } 63 64 65 /** 66 * 根据一个日期,返回是星期几的字符串 67 * 68 * @param sdate 69 * @return 70 */ 71 public static String getWeek(String sdate) { 72 // 再转换为时间 73 Date date = TimeTest.strToDate(sdate); 74 Calendar c = Calendar.getInstance(); 75 c.setTime(date); 76 // int hour=c.get(Calendar.DAY_OF_WEEK); 77 // hour中存的就是星期几了,其范围 1~7 78 // 1=星期日 7=星期六,其他类推 79 return new SimpleDateFormat("EEEE").format(c.getTime()); 80 } 81 82 /** 83 * 将短时间格式字符串转换为时间 yyyy-MM-dd 84 * 85 * @param strDate 86 * @return 87 */ 88 public static Date strToDate(String strDate) { 89 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 90 ParsePosition pos = new ParsePosition(0); 91 Date strtodate = formatter.parse(strDate, pos); 92 return strtodate; 93 } 94 95 /** 96 * 两个时间之间的天数 97 * 98 * @param date1 99 * @param date2 100 * @return 101 */ 102 public static long getDays(String date1, String date2) { 103 if (date1 == null || date1.equals("")) 104 return 0; 105 if (date2 == null || date2.equals("")) 106 return 0; 107 // 转换为标准时间 108 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 109 java.util.Date date = null; 110 java.util.Date mydate = null; 111 try { 112 date = myFormatter.parse(date1); 113 mydate = myFormatter.parse(date2); 114 } catch (Exception e) { 115 } 116 long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 117 return day; 118 } 119 120 121 122 123 // 计算当月最后一天,返回字符串 124 public String getDefaultDay(){ 125 String str = ""; 126 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 127 128 Calendar lastDate = Calendar.getInstance(); 129 lastDate.set(Calendar.DATE,1);//设为当前月的1号 130 lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号 131 lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 132 133 str=sdf.format(lastDate.getTime()); 134 return str; 135 } 136 137 // 上月第一天 138 public String getPreviousMonthFirst(){ 139 String str = ""; 140 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 141 142 Calendar lastDate = Calendar.getInstance(); 143 lastDate.set(Calendar.DATE,1);//设为当前月的1号 144 lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号 145 //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 146 147 str=sdf.format(lastDate.getTime()); 148 return str; 149 } 150 151 //获取当月第一天 152 public String getFirstDayOfMonth(){ 153 String str = ""; 154 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 155 156 Calendar lastDate = Calendar.getInstance(); 157 lastDate.set(Calendar.DATE,1);//设为当前月的1号 158 str=sdf.format(lastDate.getTime()); 159 return str; 160 } 161 162 // 获得本周星期日的日期 163 public String getCurrentWeekday() { 164 weeks = 0; 165 int mondayPlus = this.getMondayPlus(); 166 GregorianCalendar currentDate = new GregorianCalendar(); 167 currentDate.add(GregorianCalendar.DATE, mondayPlus+6); 168 Date monday = currentDate.getTime(); 169 170 DateFormat df = DateFormat.getDateInstance(); 171 String preMonday = df.format(monday); 172 return preMonday; 173 } 174 175 176 //获取当天时间 177 public String getNowTime(String dateformat){ 178 Date now = new Date(); 179 SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);//可以方便地修改日期格式 180 String hehe = dateFormat.format(now); 181 return hehe; 182 } 183 184 // 获得当前日期与本周日相差的天数 185 private int getMondayPlus() { 186 Calendar cd = Calendar.getInstance(); 187 // 获得今天是一周的第几天,星期日是第一天,星期二是第二天...... 188 int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1; //因为按中国礼拜一作为第一天所以这里减1 189 if (dayOfWeek == 1) { 190 return 0; 191 } else { 192 return 1 - dayOfWeek; 193 } 194 } 195 196 //获得本周一的日期 197 public String getMondayOFWeek(){ 198 weeks = 0; 199 int mondayPlus = this.getMondayPlus(); 200 GregorianCalendar currentDate = new GregorianCalendar(); 201 currentDate.add(GregorianCalendar.DATE, mondayPlus); 202 Date monday = currentDate.getTime(); 203 204 DateFormat df = DateFormat.getDateInstance(); 205 String preMonday = df.format(monday); 206 return preMonday; 207 } 208 209 //获得相应周的周六的日期 210 public String getSaturday() { 211 int mondayPlus = this.getMondayPlus(); 212 GregorianCalendar currentDate = new GregorianCalendar(); 213 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6); 214 Date monday = currentDate.getTime(); 215 DateFormat df = DateFormat.getDateInstance(); 216 String preMonday = df.format(monday); 217 return preMonday; 218 } 219 220 // 获得上周星期日的日期 221 public String getPreviousWeekSunday() { 222 weeks=0; 223 weeks--; 224 int mondayPlus = this.getMondayPlus(); 225 GregorianCalendar currentDate = new GregorianCalendar(); 226 currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks); 227 Date monday = currentDate.getTime(); 228 DateFormat df = DateFormat.getDateInstance(); 229 String preMonday = df.format(monday); 230 return preMonday; 231 } 232 233 // 获得上周星期一的日期 234 public String getPreviousWeekday() { 235 weeks--; 236 int mondayPlus = this.getMondayPlus(); 237 GregorianCalendar currentDate = new GregorianCalendar(); 238 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks); 239 Date monday = currentDate.getTime(); 240 DateFormat df = DateFormat.getDateInstance(); 241 String preMonday = df.format(monday); 242 return preMonday; 243 } 244 245 // 获得下周星期一的日期 246 public String getNextMonday() { 247 weeks++; 248 int mondayPlus = this.getMondayPlus(); 249 GregorianCalendar currentDate = new GregorianCalendar(); 250 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7); 251 Date monday = currentDate.getTime(); 252 DateFormat df = DateFormat.getDateInstance(); 253 String preMonday = df.format(monday); 254 return preMonday; 255 } 256 257 // 获得下周星期日的日期 258 public String getNextSunday() { 259 260 int mondayPlus = this.getMondayPlus(); 261 GregorianCalendar currentDate = new GregorianCalendar(); 262 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6); 263 Date monday = currentDate.getTime(); 264 DateFormat df = DateFormat.getDateInstance(); 265 String preMonday = df.format(monday); 266 return preMonday; 267 } 268 269 270 271 private int getMonthPlus(){ 272 Calendar cd = Calendar.getInstance(); 273 int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH); 274 cd.set(Calendar.DATE, 1);//把日期设置为当月第一天 275 cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天 276 MaxDate=cd.get(Calendar.DATE); 277 if(monthOfNumber == 1){ 278 return -MaxDate; 279 }else{ 280 return 1-monthOfNumber; 281 } 282 } 283 284 //获得上月最后一天的日期 285 public String getPreviousMonthEnd(){ 286 String str = ""; 287 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 288 289 Calendar lastDate = Calendar.getInstance(); 290 lastDate.add(Calendar.MONTH,-1);//减一个月 291 lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天 292 lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 293 str=sdf.format(lastDate.getTime()); 294 return str; 295 } 296 297 //获得下个月第一天的日期 298 public String getNextMonthFirst(){ 299 String str = ""; 300 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 301 302 Calendar lastDate = Calendar.getInstance(); 303 lastDate.add(Calendar.MONTH,1);//减一个月 304 lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天 305 str=sdf.format(lastDate.getTime()); 306 return str; 307 } 308 309 //获得下个月最后一天的日期 310 public String getNextMonthEnd(){ 311 String str = ""; 312 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 313 314 Calendar lastDate = Calendar.getInstance(); 315 lastDate.add(Calendar.MONTH,1);//加一个月 316 lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天 317 lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 318 str=sdf.format(lastDate.getTime()); 319 return str; 320 } 321 322 //获得明年最后一天的日期 323 public String getNextYearEnd(){ 324 String str = ""; 325 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 326 327 Calendar lastDate = Calendar.getInstance(); 328 lastDate.add(Calendar.YEAR,1);//加一个年 329 lastDate.set(Calendar.DAY_OF_YEAR, 1); 330 lastDate.roll(Calendar.DAY_OF_YEAR, -1); 331 str=sdf.format(lastDate.getTime()); 332 return str; 333 } 334 335 //获得明年第一天的日期 336 public String getNextYearFirst(){ 337 String str = ""; 338 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 339 340 Calendar lastDate = Calendar.getInstance(); 341 lastDate.add(Calendar.YEAR,1);//加一个年 342 lastDate.set(Calendar.DAY_OF_YEAR, 1); 343 str=sdf.format(lastDate.getTime()); 344 return str; 345 346 } 347 348 //获得本年有多少天 349 private int getMaxYear(){ 350 Calendar cd = Calendar.getInstance(); 351 cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天 352 cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。 353 int MaxYear = cd.get(Calendar.DAY_OF_YEAR); 354 return MaxYear; 355 } 356 357 private int getYearPlus(){ 358 Calendar cd = Calendar.getInstance(); 359 int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天 360 cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天 361 cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。 362 int MaxYear = cd.get(Calendar.DAY_OF_YEAR); 363 if(yearOfNumber == 1){ 364 return -MaxYear; 365 }else{ 366 return 1-yearOfNumber; 367 } 368 } 369 //获得本年第一天的日期 370 public String getCurrentYearFirst(){ 371 int yearPlus = this.getYearPlus(); 372 GregorianCalendar currentDate = new GregorianCalendar(); 373 currentDate.add(GregorianCalendar.DATE,yearPlus); 374 Date yearDay = currentDate.getTime(); 375 DateFormat df = DateFormat.getDateInstance(); 376 String preYearDay = df.format(yearDay); 377 return preYearDay; 378 } 379 380 381 //获得本年最后一天的日期 * 382 public String getCurrentYearEnd(){ 383 Date date = new Date(); 384 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方便地修改日期格式 385 String years = dateFormat.format(date); 386 return years+"-12-31"; 387 } 388 389 390 //获得上年第一天的日期 * 391 public String getPreviousYearFirst(){ 392 Date date = new Date(); 393 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方便地修改日期格式 394 String years = dateFormat.format(date); int years_value = Integer.parseInt(years); 395 years_value--; 396 return years_value+"-1-1"; 397 } 398 399 //获得上年最后一天的日期 400 public String getPreviousYearEnd(){ 401 weeks--; 402 int yearPlus = this.getYearPlus(); 403 GregorianCalendar currentDate = new GregorianCalendar(); 404 currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1)); 405 Date yearDay = currentDate.getTime(); 406 DateFormat df = DateFormat.getDateInstance(); 407 String preYearDay = df.format(yearDay); 408 getThisSeasonTime(11); 409 return preYearDay; 410 } 411 412 //获得本季度 413 public String getThisSeasonTime(int month){ 414 int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; 415 int season = 1; 416 if(month>=1&&month<=3){ 417 season = 1; 418 } 419 if(month>=4&&month<=6){ 420 season = 2; 421 } 422 if(month>=7&&month<=9){ 423 season = 3; 424 } 425 if(month>=10&&month<=12){ 426 season = 4; 427 } 428 int start_month = array[season-1][0]; 429 int end_month = array[season-1][2]; 430 431 Date date = new Date(); 432 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方便地修改日期格式 433 String years = dateFormat.format(date); 434 int years_value = Integer.parseInt(years); 435 436 int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month); 437 int end_days = getLastDayOfMonth(years_value,end_month); 438 String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days; 439 return seasonDate; 440 441 } 442 443 /** 444 * 获取某年某月的最后一天 445 * @param year 年 446 * @param month 月 447 * @return 最后一天 448 */ 449 private int getLastDayOfMonth(int year, int month) { 450 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 451 || month == 10 || month == 12) { 452 return 31; 453 } 454 if (month == 4 || month == 6 || month == 9 || month == 11) { 455 return 30; 456 } 457 if (month == 2) { 458 if (isLeapYear(year)) { 459 return 29; 460 } else { 461 return 28; 462 } 463 } 464 return 0; 465 } 466 /** 467 * 是否闰年 468 * @param year 年 469 * @return 470 */ 471 public boolean isLeapYear(int year) { 472 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); 473 } 474 }
这篇代码对我帮助很大,所有收藏希望能帮助更多的人
转自:http://www.iteye.com/topic/285405
标签:
原文地址:http://www.cnblogs.com/wangshuai-1129/p/5741053.html