1. 程式人生 > >java中String和date之間的互轉

java中String和date之間的互轉

1 Java時間格式轉換大全
  2 
  3 import java.text.*;
  4 import java.util.Calendar;
  5 public class VeDate {
  6 /**
  7    * 獲取現在時間
  8    * 
  9    * @return 返回時間型別 yyyy-MM-dd HH:mm:ss
 10    */
 11 public static Date getNowDate() {
 12    Date currentTime = new Date();
 13    SimpleDateFormat formatter = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 14 String dateString = formatter.format(currentTime); 15 ParsePosition pos = new ParsePosition(8); 16 Date currentTime_2 = formatter.parse(dateString, pos); 17 return currentTime_2; 18 } 19 /** 20 * 獲取現在時間 21 * 22 * @return返回短時間格式 yyyy-MM-dd
23 */ 24 DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); 25 DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒"); 26 Date date = null; 27 String str = null; 28 29 // String轉Date 30 str = "2007-1-18"; 31 try
{ 32 date = format1.parse(str); 33 data = format2.parse(str); 34 } catch (ParseException e) { 35 e.printStackTrace(); 36 } 37 /** 38 * 獲取現在時間 39 * 40 * @return返回字串格式 yyyy-MM-dd HH:mm:ss 41 */ 42 public static String getStringDate() { 43 Date currentTime = new Date(); 44 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 45 String dateString = formatter.format(currentTime); 46 return dateString; 47 } 48 /** 49 * 獲取現在時間 50 * 51 * @return 返回短時間字串格式yyyy-MM-dd 52 */ 53 public static String getStringDateShort() { 54 Date currentTime = new Date(); 55 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 56 String dateString = formatter.format(currentTime); 57 return dateString; 58 } 59 /** 60 * 獲取時間 小時:分;秒 HH:mm:ss 61 * 62 * @return 63 */ 64 public static String getTimeShort() { 65 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 66 Date currentTime = new Date(); 67 String dateString = formatter.format(currentTime); 68 return dateString; 69 } 70 /** 71 * 將長時間格式字串轉換為時間 yyyy-MM-dd HH:mm:ss 72 * 73 * @param strDate 74 * @return 75 */ 76 public static Date strToDateLong(String strDate) { 77 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 78 ParsePosition pos = new ParsePosition(0); 79 Date strtodate = formatter.parse(strDate, pos); 80 return strtodate; 81 } 82 /** 83 * 將長時間格式時間轉換為字串 yyyy-MM-dd HH:mm:ss 84 * 85 * @param dateDate 86 * @return 87 */ 88 public static String dateToStrLong(java.util.Date dateDate) { 89 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 90 String dateString = formatter.format(dateDate); 91 return dateString; 92 } 93 /** 94 * 將短時間格式時間轉換為字串 yyyy-MM-dd 95 * 96 * @param dateDate 97 * @param k 98 * @return 99 */ 100 public static String dateToStr(java.util.Date dateDate) { 101 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 102 String dateString = formatter.format(dateDate); 103 return dateString; 104 } 105 /** 106 * 將短時間格式字串轉換為時間 yyyy-MM-dd 107 * 108 * @param strDate 109 * @return 110 */ 111 public static Date strToDate(String strDate) { 112 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 113 ParsePosition pos = new ParsePosition(0); 114 Date strtodate = formatter.parse(strDate, pos); 115 return strtodate; 116 } 117 /** 118 * 得到現在時間 119 * 120 * @return 121 */ 122 public static Date getNow() { 123 Date currentTime = new Date(); 124 return currentTime; 125 } 126 /** 127 * 提取一個月中的最後一天 128 * 129 * @param day 130 * @return 131 */ 132 public static Date getLastDate(long day) { 133 Date date = new Date(); 134 long date_3_hm = date.getTime() - 3600000 * 34 * day; 135 Date date_3_hm_date = new Date(date_3_hm); 136 return date_3_hm_date; 137 } 138 /** 139 * 得到現在時間 140 * 141 * @return 字串 yyyyMMdd HHmmss 142 */ 143 public static String getStringToday() { 144 Date currentTime = new Date(); 145 SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); 146 String dateString = formatter.format(currentTime); 147 return dateString; 148 } 149 /** 150 * 得到現在小時 151 */ 152 public static String getHour() { 153 Date currentTime = new Date(); 154 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 155 String dateString = formatter.format(currentTime); 156 String hour; 157 hour = dateString.substring(11, 13); 158 return hour; 159 } 160 /** 161 * 得到現在分鐘 162 * 163 * @return 164 */ 165 public static String getTime() { 166 Date currentTime = new Date(); 167 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 168 String dateString = formatter.format(currentTime); 169 String min; 170 min = dateString.substring(14, 16); 171 return min; 172 } 173 /** 174 * 根據使用者傳入的時間表示格式,返回當前時間的格式 如果是yyyyMMdd,注意字母y不能大寫。 175 * 176 * @param sformat 177 * yyyyMMddhhmmss 178 * @return 179 */ 180 public static String getUserDate(String sformat) { 181 Date currentTime = new Date(); 182 SimpleDateFormat formatter = new SimpleDateFormat(sformat); 183 String dateString = formatter.format(currentTime); 184 return dateString; 185 } 186 -------------------------------------------------------------------------------------------------------------------------------- 187 188 做成方法 189 190 import java.util.*; 191 import java.text.*; 192 import java.util.Calendar; 193 194 public class VeDate { 195 /** 196 * 獲取現在時間 197 * 198 * @return 返回時間型別 yyyy-MM-dd HH:mm:ss 199 */ 200 public static Date getNowDate() { 201 Date currentTime = new Date(); 202 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 203 String dateString = formatter.format(currentTime); 204 ParsePosition pos = new ParsePosition(8); 205 Date currentTime_2 = formatter.parse(dateString, pos); 206 return currentTime_2; 207 } 208 209 /** 210 * 獲取現在時間 211 * 212 * @return返回短時間格式 yyyy-MM-dd 213 */ 214 public static Date getNowDateShort() { 215 Date currentTime = new Date(); 216 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 217 String dateString = formatter.format(currentTime); 218 ParsePosition pos = new ParsePosition(8); 219 Date currentTime_2 = formatter.parse(dateString, pos); 220 return currentTime_2; 221 } 222 223 /** 224 * 獲取現在時間 225 * 226 * @return返回字串格式 yyyy-MM-dd HH:mm:ss 227 */ 228 public static String getStringDate() { 229 Date currentTime = new Date(); 230 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 231 String dateString = formatter.format(currentTime); 232 return dateString; 233 } 234 235 /** 236 * 獲取現在時間 237 * 238 * @return 返回短時間字串格式yyyy-MM-dd 239 */ 240 public static String getStringDateShort() { 241 Date currentTime = new Date(); 242 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 243 String dateString = formatter.format(currentTime); 244 return dateString; 245 } 246 247 /** 248 * 獲取時間 小時:分;秒 HH:mm:ss 249 * 250 * @return 251 */ 252 public static String getTimeShort() { 253 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 254 Date currentTime = new Date(); 255 String dateString = formatter.format(currentTime); 256 return dateString; 257 } 258 259 /** 260 * 將長時間格式字串轉換為時間 yyyy-MM-dd HH:mm:ss 261 * 262 * @param strDate 263 * @return 264 */ 265 public static Date strToDateLong(String strDate) { 266 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 267 ParsePosition pos = new ParsePosition(0); 268 Date strtodate = formatter.parse(strDate, pos); 269 return strtodate; 270 } 271 272 /** 273 * 將長時間格式時間轉換為字串 yyyy-MM-dd HH:mm:ss 274 * 275 * @param dateDate 276 * @return 277 */ 278 public static String dateToStrLong(java.util.Date dateDate) { 279 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 280 String dateString = formatter.format(dateDate); 281 return dateString; 282 } 283 284 /** 285 * 將短時間格式時間轉換為字串 yyyy-MM-dd 286 * 287 * @param dateDate 288 * @param k 289 * @return 290 */ 291 public static String dateToStr(java.util.Date dateDate) { 292 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 293 String dateString = formatter.format(dateDate); 294 return dateString; 295 } 296 297 /** 298 * 將短時間格式字串轉換為時間 yyyy-MM-dd 299 * 300 * @param strDate 301 * @return 302 */ 303 public static Date strToDate(String strDate) { 304 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 305 ParsePosition pos = new ParsePosition(0); 306 Date strtodate = formatter.parse(strDate, pos); 307 return strtodate; 308 } 309 310 /** 311 * 得到現在時間 312 * 313 * @return 314 */ 315 public static Date getNow() { 316 Date currentTime = new Date(); 317 return currentTime; 318 } 319 320 /** 321 * 提取一個月中的最後一天 322 * 323 * @param day 324 * @return 325 */ 326 public static Date getLastDate(long day) { 327 Date date = new Date(); 328 long date_3_hm = date.getTime() - 3600000 * 34 * day; 329 Date date_3_hm_date = new Date(date_3_hm); 330 return date_3_hm_date; 331 } 332 333 /** 334 * 得到現在時間 335 * 336 * @return 字串 yyyyMMdd HHmmss 337 */ 338 public static String getStringToday() { 339 Date currentTime = new Date(); 340 SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); 341 String dateString = formatter.format(currentTime); 342 return dateString; 343 } 344 345 /** 346 * 得到現在小時 347 */ 348 public static String getHour() { 349 Date currentTime = new Date(); 350 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 351 String dateString = formatter.format(currentTime); 352 String hour; 353 hour = dateString.substring(11, 13); 354 return hour; 355 } 356 357 /** 358 * 得到現在分鐘 359 * 360 * @return 361 */ 362 public static String getTime() { 363 Date currentTime = new Date(); 364 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 365 String dateString = formatter.format(currentTime); 366 String min; 367 min = dateString.substring(14, 16); 368 return min; 369 } 370 371 /** 372 * 根據使用者傳入的時間表示格式,返回當前時間的格式 如果是yyyyMMdd,注意字母y不能大寫。 373 * 374 * @param sformat 375 * yyyyMMddhhmmss 376 * @return 377 */ 378 public static String getUserDate(String sformat) { 379 Date currentTime = new Date(); 380 SimpleDateFormat formatter = new SimpleDateFormat(sformat); 381 String dateString = formatter.format(currentTime); 382 return dateString; 383 } 384 385 /** 386 * 二個小時時間間的差值,必須保證二個時間都是"HH:MM"的格式,返回字元型的分鐘 387 */ 388 public static String getTwoHour(String st1, String st2) { 389 String[] kk = null; 390 String[] jj = null; 391 kk = st1.split(":"); 392 jj = st2.split(":"); 393 if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0])) 394 return "0"; 395 else { 396 double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60; 397 double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60; 398 if ((y - u) > 0) 399 return y - u + ""; 400 else 401 return "0"; 402 } 403 } 404 405 /** 406 * 得到二個日期間的間隔天數 407 */ 408 public static String getTwoDay(String sj1, String sj2) { 409 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 410 long day = 0; 411 try { 412 java.util.Date date = myFormatter.parse(sj1); 413 java.util.Date mydate = myFormatter.parse(sj2); 414 day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 415 } catch (Exception e) { 416 return ""; 417 } 418 return day + ""; 419 } 420 421 /** 422 * 時間前推或後推分鐘,其中JJ表示分鐘. 423 */ 424 public static String getPreTime(String sj1, String jj) { 425 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 426 String mydate1 = ""; 427 try { 428 Date date1 = format.parse(sj1); 429 long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60; 430 date1.setTime(Time * 1000); 431 mydate1 = format.format(date1); 432 } catch (Exception e) { 433 } 434 return mydate1; 435 } 436 437 /** 438 * 得到一個時間延後或前移幾天的時間,nowdate為時間,delay為前移或後延的天數 439 */ 440 public static String getNextDay(String nowdate, String delay) { 441 try{ 442 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 443 String mdate = ""; 444 Date d = strToDate(nowdate); 445 long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60; 446 d.setTime(myTime * 1000); 447 mdate = format.format(d); 448 return mdate; 449 }catch(Exception e){ 450 return ""; 451 } 452 } 453 454 /** 455 * 判斷是否潤年 456 * 457 * @param ddate 458 * @return 459 */ 460 public static boolean isLeapYear(String ddate) { 461 462 /** 463 * 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年 464 * 3.能被4整除同時能被100整除則不是閏年 465 */ 466 Date d = strToDate(ddate); 467 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); 468 gc.setTime(d); 469 int year = gc.get(Calendar.YEAR); 470 if ((year % 400) == 0) 471 return true; 472 else if ((year % 4) == 0) { 473 if ((year % 100) == 0) 474 return false; 475 else 476 return true; 477 } else 478 return false; 479 } 480 481 /** 482 * 返回美國時間格式 26 Apr 2006 483 * 484 * @param str 485 * @return 486 */ 487 public static String getEDate(String str) { 488 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 489 ParsePosition pos = new ParsePosition(0); 490 Date strtodate = formatter.parse(str, pos); 491 String j = strtodate.toString(); 492 String[] k = j.split(" "); 493 return k[2] + k[1].toUpperCase() + k[5].substring(2, 4); 494 } 495 496 /** 497 * 獲取一個月的最後一天 498 * 499 * @param dat 500 * @return 501 */ 502 public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd 503 String str = dat.substring(0, 8); 504 String month = dat.substring(5, 7); 505 int mon = Integer.parseInt(month); 506 if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) { 507 str += "31"; 508 } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) { 509 str += "30"; 510 } else { 511 if (isLeapYear(dat)) { 512 str += "29"; 513 } else { 514 str += "28"; 515 } 516 } 517 return str; 518 } 519 520 /** 521 * 判斷二個時間是否在同一個周 522 * 523 * @param date1 524 * @param date2 525 * @return 526 */ 527 public static boolean isSameWeekDates(Date date1, Date date2) { 528 Calendar cal1 = Calendar.getInstance(); 529 Calendar cal2 = Calendar.getInstance(); 530 cal1.setTime(date1); 531 cal2.setTime(date2); 532 int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); 533 if (0 == subYear) { 534 if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) 535 return true; 536 } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) { 537 // 如果12月的最後一週橫跨來年第一週的話則最後一週即算做來年的第一週 538 if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) 539 return true; 540 } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) { 541 if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) 542 return true; 543 } 544 return false; 545 } 546 547 /** 548 * 產生周序列,即得到當前時間所在的年度是第幾周 549 * 550 * @return 551 */ 552 public static String getSeqWeek() { 553 Calendar c = Calendar.getInstance(Locale.CHINA); 554 String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR)); 555 if (week.length() == 1) 556 week = "0" + week; 557 String year = Integer.toString(c.get(Calendar.YEAR)); 558 return year + week; 559 } 560 561 /** 562 * 獲得一個日期所在的周的星期幾的日期,如要找出2002年2月3日所在周的星期一是幾號 563 * 564 * @param sdate 565 * @param num 566 * @return 567 */ 568 public static String getWeek(String sdate, String num) { 569 // 再轉換為時間 570 Date dd = VeDate.strToDate(sdate); 571 Calendar c = Calendar.getInstance(); 572 c.setTime(dd); 573 if (num.equals("1")) // 返回星期一所在的日期 574 c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 575 else if (num.equals("2")) // 返回星期二所在的日期 576 c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 577 else if (num.equals("3")) // 返回星期三所在的日期 578 c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); 579 else if (num.equals("4")) // 返回星期四所在的日期 580 c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); 581 else if (num.equals("5")) // 返回星期五所在的日期 582 c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 583 else if (num.equals("6")) // 返回星期六所在的日期 584 c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); 585 else if (num.equals("0")) // 返回星期日所在的日期 586 c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 587 return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); 588 } 589 590 /** 591 * 根據一個日期,返回是星期幾的字串 592 * 593 * @param sdate 594 * @return 595 */ 596 public static String getWeek(String sdate) { 597 // 再轉換為時間 598 Date date = VeDate.strToDate(sdate); 599 Calendar c = Calendar.getInstance(); 600 c.setTime(date); 601 // int hour=c.get(Calendar.DAY_OF_WEEK); 602 // hour中存的就是星期幾了,其範圍 1~7 603 // 1=星期日 7=星期六,其他類推 604 return new SimpleDateFormat("EEEE").format(c.getTime()); 605 } 606 public static String getWeekStr(String sdate){ 607 String str = ""; 608 str = VeDate.getWeek(sdate); 609 if("1".equals(str)){ 610 str = "星期日"; 611 }else if("2".equals(str)){ 612 str = "星期一"; 613 }else if("3".equals(str)){ 614 str = "星期二"; 615 }else if("4".equals(str)){ 616 str = "星期三"; 617 }else if("5".equals(str)){ 618 str = "星期四"; 619 }else if("6".equals(str)){ 620 str = "星期五"; 621 }else if("7".equals(str)){ 622 str = "星期六"; 623 } 624 return str; 625 } 626 627 /** 628 * 兩個時間之間的天數 629 * 630 * @param date1 631 * @param date2 632 * @return 633 */ 634 public static long getDays(String date1, String date2) { 635 if (date1 == null || date1.equals("")) 636 return 0; 637 if (date2 == null || date2.equals("")) 638 return 0; 639 // 轉換為標準時間 640 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 641 java.util.Date date = null; 642 java.util.Date mydate = null; 643 try { 644 date = myFormatter.parse(date1); 645 mydate = myFormatter.parse(date2); 646 } catch (Exception e) { 647 } 648 long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 649 return day; 650 } 651 652 /** 653 * 形成如下的日曆 , 根據傳入的一個時間返回一個結構 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是當月的各個時間 654 * 此函式返回該日曆第一行星期日所在的日期 655 * 656 * @param sdate 657 * @return 658 */ 659 public static String getNowMonth(String sdate) { 660 // 取該時間所在月的一號 661 sdate = sdate.substring(0, 8) + "01"; 662 663 // 得到這個月的1號是星期幾 664 Date date = VeDate.strToDate(sdate); 665 Calendar c = Calendar.getInstance(); 666 c.setTime(date); 667 int u = c.get(Calendar.DAY_OF_WEEK); 668 String newday = VeDate.getNextDay(sdate, (1 - u) + ""); 669 return newday; 670 } 671 672 /** 673 * 取得資料庫主鍵 生成格式為yyyymmddhhmmss+k位隨機數 674 * 675 * @param k 676 * 表示是取幾位隨機數,可以自己定 677 */ 678 679 public static String getNo(int k) { 680 681 return getUserDate("yyyyMMddhhmmss") + getRandom(k); 682 } 683 684 /** 685 * 返回一個隨機數 686 * 687 * @param i 688 * @return 689 */ 690 public static String getRandom(int i) { 691 Random jjj = new Random(); 692 // int suiJiShu = jjj.nextInt(9); 693 if (i == 0) 694 return ""; 695 String jj = ""; 696 for (int k = 0; k < i; k++) { 697 jj = jj + jjj.nextInt(9); 698 } 699 return jj; 700 } 701 702 /** 703 * 704 * @param args 705 */ 706 public static boolean RightDate(String date) { 707 708 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 709 ; 710 if (date == null) 711 return false; 712 if (date.length() > 10) { 713 sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 714 } else { 715 sdf = new SimpleDateFormat("yyyy-MM-dd"); 716 } 717 try { 718 sdf.parse(date); 719 } catch (ParseException pe) { 720 return false; 721 } 722 return true; 723 } 724 725 /*************************************************************************** 726 * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1 727 * 以年月日中文返回 2 以橫線-返回 // 3 以斜線/返回 4 以縮寫不帶其它符號形式返回 // 5 以點號.返回 728 **************************************************************************/ 729 public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) { 730 Date currentTime = new Date(); 731 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 732 String dateString = formatter.format(currentTime); 733 String s_nd = dateString.substring(0, 4); // 年份 734 String s_yf = dateString.substring(5, 7); // 月份 735 String s_rq = dateString.substring(8, 10); // 日期 736 String sreturn = ""; 737 roc.util.MyChar mc = new roc.util.MyChar(); 738 if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 處理空值情況 739 if (nd.equals("1")) { 740 sreturn = s_nd; 741 // 處理間隔符 742 if (format.equals("1")) 743 sreturn = sreturn + "年"; 744 else if (format.equals("2")) 745 sreturn = sreturn + "-"; 746 else if (format.equals("3")) 747 sreturn = sreturn + "/"; 748 else if (format.equals("5")) 749 sreturn = sreturn + "."; 750 } 751 // 處理月份 752 if (yf.equals("1")) { 753 sreturn = sreturn + s_yf; 754 if (format.equals("1")) 755 sreturn = sreturn + "月"; 756 else if (format.equals("2")) 757 sreturn = sreturn + "-"; 758 else if (format.equals("3")) 759 sreturn = sreturn + "/"; 760 else if (format.equals("5")) 761 sreturn = sreturn + "."; 762 } 763 // 處理日期 764 if (rq.equals("1")) { 765 sreturn = sreturn + s_rq; 766 if (format.equals("1")) 767 sreturn = sreturn + "日"; 768 } 769 } else { 770 // 不是空值,也是一個合法的日期值,則先將其轉換為標準的時間格式 771 sdate = roc.util.RocDate.getOKDate(sdate); 772 s_nd = sdate.substring(0, 4); // 年份 773 s_yf = sdate.substring(5, 7); // 月份 774 s_rq = sdate.substring(8, 10); // 日期 775 if (nd.equals("1")) { 776 sreturn = s_nd; 777 // 處理間隔符 778 if (format.equals("1")) 779 sreturn = sreturn + "年"; 780 else if (format.equals("2")) 781 sreturn = sreturn + "-"; 782 else if (format.equals("3")) 783 sreturn = sreturn + "/"; 784 else if (format.equals("5")) 785 sreturn = sreturn + "."; 786 } 787 // 處理月份 788 if (yf.equals("1")) { 789 sreturn = sreturn + s_yf; 790 if (format.equals("1")) 791 sreturn = sreturn + "月"; 792 else if (format.equals("2")) 793 sreturn = sreturn + "-"; 794 else if (format.equals("3")) 795 sreturn = sreturn + "/"; 796 else if (format.equals("5")) 797 sreturn = sreturn + "."; 798 } 799 // 處理日期 800 if (rq.equals("1")) { 801 sreturn = sreturn + s_rq; 802 if (format.equals("1")) 803 sreturn = sreturn + "日"; 804 } 805 } 806 return sreturn; 807 } 808 809 public static String getNextMonthDay(String sdate, int m) { 810 sdate = getOKDate(sdate); 811 int year = Integer.parseInt(sdate.substring(0, 4)); 812 int month = Integer.parseInt(sdate.substring(5, 7)); 813 month = month + m; 814 if (month < 0) { 815 month = month + 12; 816 year = year - 1; 817 } else if (month > 12) { 818 month = month - 12; 819 year = year + 1; 820 } 821 String smonth = ""; 822 if (month < 10) 823 smonth = "0" + month; 824 else 825 smonth = "" + month; 826 return year + "-" + smonth + "-10"; 827 } 828 829 public static String getOKDate(String sdate) { 830 if (sdate == null || sdate.equals("")) 831 return getStringDateShort(); 832 833 if (!VeStr.Isdate(sdate)) { 834 sdate = getStringDateShort(); 835 } 836 // 將“/”轉換為“-” 837 sdate = VeStr.Replace(sdate, "/", "-"); 838 // 如果只有8位長度,則要進行轉換 839 if (sdate.length() == 8) 840 sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8); 841 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 842 ParsePosition pos = new ParsePosition(0); 843 Date strtodate = formatter.parse(sdate, pos); 844 String dateString = formatter.format(strtodate); 845 return dateString; 846 } 847 848 public static void main(String[] args) throws Exception { 849 try { 850 //System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09"))); 851 } catch (Exception e) { 852 throw new Exception(); 853 } 854 //System.out.println("sss"); 855 }