java日期格式的常用操作
其他回答(1)
0
1 public class DateUtils extends PropertyEditorSupport { 2 // 各种时间格式 3 public static final SimpleDateFormat date_sdf = new SimpleDateFormat( 4 "yyyy-MM-dd"); 5 // 各种时间格式 6 public static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat( 7 "yyyyMMdd"); 8 // 各种时间格式 9 public static final SimpleDateFormat date_sdf_wz = new SimpleDateFormat( 10 "yyyy年MM月dd日"); 11 public static final SimpleDateFormat time_sdf = new SimpleDateFormat( 12 "yyyy-MM-dd HH:mm"); 13 public static final SimpleDateFormat yyyymmddhhmmss = new SimpleDateFormat( 14 "yyyyMMddHHmmss"); 15 public static final SimpleDateFormat short_time_sdf = new SimpleDateFormat( 16 "HH:mm"); 17 public static final SimpleDateFormat datetimeFormat = new SimpleDateFormat( 18 "yyyy-MM-dd HH:mm:ss"); 19 // 以毫秒表示的时间 20 private static final long DAY_IN_MILLIS = 24 * 3600 * 1000; 21 private static final long HOUR_IN_MILLIS = 3600 * 1000; 22 private static final long MINUTE_IN_MILLIS = 60 * 1000; 23 private static final long SECOND_IN_MILLIS = 1000; 24 // 指定模式的时间格式 25 private static SimpleDateFormat getSDFormat(String pattern) { 26 return new SimpleDateFormat(pattern); 27 } 28 29 /** 30 * 当前日历,这里用中国时间表示 31 * 32 * @return 以当地时区表示的系统当前日历 33 */ 34 public static Calendar getCalendar() { 35 return Calendar.getInstance(); 36 } 37 38 /** 39 * 指定毫秒数表示的日历 40 * 41 * @param millis 42 * 毫秒数 43 * @return 指定毫秒数表示的日历 44 */ 45 public static Calendar getCalendar(long millis) { 46 Calendar cal = Calendar.getInstance(); 47 cal.setTime(new Date(millis)); 48 return cal; 49 } 50 /** 51 * 时间转字符串 52 * @return 53 */ 54 public static String date2SStr() 55 { 56 Date date=getDate(); 57 if (null == date) { 58 return null; 59 } 60 return yyyyMMdd.format(date); 61 } 62 63 // //////////////////////////////////////////////////////////////////////////// 64 // getDate 65 // 各种方式获取的Date 66 // //////////////////////////////////////////////////////////////////////////// 67 68 /** 69 * 当前日期 70 * 71 * @return 系统当前时间 72 */ 73 public static Date getDate() { 74 return new Date(); 75 } 76 77 /** 78 * 指定毫秒数表示的日期 79 * 80 * @param millis 81 * 毫秒数 82 * @return 指定毫秒数表示的日期 83 */ 84 public static Date getDate(long millis) { 85 return new Date(millis); 86 } 87 88 /** 89 * 时间戳转换为字符串 90 * 91 * @param time 92 * @return 93 */ 94 public static String timestamptoStr(Timestamp time) { 95 Date date = null; 96 if (null != time) { 97 date = new Date(time.getTime()); 98 } 99 return date2Str(date_sdf); 100 } 101 102 /** 103 * 字符串转换时间戳 104 * 105 * @param str 106 * @return 107 */ 108 public static Timestamp str2Timestamp(String str) { 109 Date date = str2Date(str, date_sdf); 110 return new Timestamp(date.getTime()); 111 } 112 /** 113 * 字符串转换成日期 114 * @param str 115 * @param sdf 116 * @return 117 */ 118 public static Date str2Date(String str, SimpleDateFormat sdf) { 119 if (null == str || "".equals(str)) { 120 return null; 121 } 122 Date date = null; 123 try { 124 date = sdf.parse(str); 125 return date; 126 } catch (ParseException e) { 127 e.printStackTrace(); 128 } 129 return null; 130 } 131 132 /** 133 * 日期转换为字符串 134 * 135 * @param date 136 * 日期 137 * @param format 138 * 日期格式 139 * @return 字符串 140 */ 141 public static String date2Str(SimpleDateFormat date_sdf) { 142 Date date=getDate(); 143 if (null == date) { 144 return null; 145 } 146 return date_sdf.format(date); 147 } 148 /** 149 * 格式化时间 150 * @param data 151 * @param format 152 * @return 153 */ 154 public static String dataformat(String data,String format) 155 { 156 SimpleDateFormat sformat = new SimpleDateFormat(format); 157 Date date=null; 158 try { 159 date=sformat.parse(data); 160 } catch (ParseException e) { 161 // TODO Auto-generated catch block 162 e.printStackTrace(); 163 } 164 return sformat.format(date); 165 } 166 /** 167 * 日期转换为字符串 168 * 169 * @param date 170 * 日期 171 * @param format 172 * 日期格式 173 * @return 字符串 174 */ 175 public static String date2Str(Date date, SimpleDateFormat date_sdf) { 176 if (null == date) { 177 return null; 178 } 179 return date_sdf.format(date); 180 } 181 /** 182 * 日期转换为字符串 183 * 184 * @param date 185 * 日期 186 * @param format 187 * 日期格式 188 * @return 字符串 189 */ 190 public static String getDate(String format) { 191 Date date=new Date(); 192 if (null == date) { 193 return null; 194 } 195 SimpleDateFormat sdf = new SimpleDateFormat(format); 196 return sdf.format(date); 197 } 198 199 /** 200 * 指定毫秒数的时间戳 201 * 202 * @param millis 203 * 毫秒数 204 * @return 指定毫秒数的时间戳 205 */ 206 public static Timestamp getTimestamp(long millis) { 207 return new Timestamp(millis); 208 } 209 210 /** 211 * 以字符形式表示的时间戳 212 * 213 * @param time 214 * 毫秒数 215 * @return 以字符形式表示的时间戳 216 */ 217 public static Timestamp getTimestamp(String time) { 218 return new Timestamp(Long.parseLong(time)); 219 } 220 221 /** 222 * 系统当前的时间戳 223 * 224 * @return 系统当前的时间戳 225 */ 226 public static Timestamp getTimestamp() { 227 return new Timestamp(new Date().getTime()); 228 } 229 230 /** 231 * 指定日期的时间戳 232 * 233 * @param date 234 * 指定日期 235 * @return 指定日期的时间戳 236 */ 237 public static Timestamp getTimestamp(Date date) { 238 return new Timestamp(date.getTime()); 239 } 240 241 /** 242 * 指定日历的时间戳 243 * 244 * @param cal 245 * 指定日历 246 * @return 指定日历的时间戳 247 */ 248 public static Timestamp getCalendarTimestamp(Calendar cal) { 249 return new Timestamp(cal.getTime().getTime()); 250 } 251 252 public static Timestamp gettimestamp() { 253 Date dt = new Date(); 254 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 255 String nowTime = df.format(dt); 256 java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime); 257 return buydate; 258 } 259 260 // //////////////////////////////////////////////////////////////////////////// 261 // getMillis 262 // 各种方式获取的Millis 263 // //////////////////////////////////////////////////////////////////////////// 264 265 /** 266 * 系统时间的毫秒数 267 * 268 * @return 系统时间的毫秒数 269 */ 270 public static long getMillis() { 271 return new Date().getTime(); 272 } 273 274 /** 275 * 指定日历的毫秒数 276 * 277 * @param cal 278 * 指定日历 279 * @return 指定日历的毫秒数 280 */ 281 public static long getMillis(Calendar cal) { 282 return cal.getTime().getTime(); 283 } 284 285 /** 286 * 指定日期的毫秒数 287 * 288 * @param date 289 * 指定日期 290 * @return 指定日期的毫秒数 291 */ 292 public static long getMillis(Date date) { 293 return date.getTime(); 294 } 295 296 /** 297 * 指定时间戳的毫秒数 298 * 299 * @param ts 300 * 指定时间戳 301 * @return 指定时间戳的毫秒数 302 */ 303 public static long getMillis(Timestamp ts) { 304 return ts.getTime(); 305 } 306 307 // //////////////////////////////////////////////////////////////////////////// 308 // formatDate 309 // 将日期按照一定的格式转化为字符串 310 // //////////////////////////////////////////////////////////////////////////// 311 312 /** 313 * 默认方式表示的系统当前日期,具体格式:年-月-日 314 * 315 * @return 默认日期按“年-月-日“格式显示 316 */ 317 public static String formatDate() { 318 return date_sdf.format(getCalendar().getTime()); 319 } 320 /** 321 * 获取时间字符串 322 */ 323 public static String getDataString(SimpleDateFormat formatstr) { 324 return formatstr.format(getCalendar().getTime()); 325 } 326 /** 327 * 指定日期的默认显示,具体格式:年-月-日 328 * 329 * @param cal 330 * 指定的日期 331 * @return 指定日期按“年-月-日“格式显示 332 */ 333 public static String formatDate(Calendar cal) { 334 return date_sdf.format(cal.getTime()); 335 } 336 337 /** 338 * 指定日期的默认显示,具体格式:年-月-日 339 * 340 * @param date 341 * 指定的日期 342 * @return 指定日期按“年-月-日“格式显示 343 */ 344 public static String formatDate(Date date) { 345 return date_sdf.format(date); 346 } 347 348 /** 349 * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 350 * 351 * @param millis 352 * 指定的毫秒数 353 * @return 指定毫秒数表示日期按“年-月-日“格式显示 354 */ 355 public static String formatDate(long millis) { 356 return date_sdf.format(new Date(millis)); 357 } 358 359 /** 360 * 默认日期按指定格式显示 361 * 362 * @param pattern 363 * 指定的格式 364 * @return 默认日期按指定格式显示 365 */ 366 public static String formatDate(String pattern) { 367 return getSDFormat(pattern).format(getCalendar().getTime()); 368 } 369 370 /** 371 * 指定日期按指定格式显示 372 * 373 * @param cal 374 * 指定的日期 375 * @param pattern 376 * 指定的格式 377 * @return 指定日期按指定格式显示 378 */ 379 public static String formatDate(Calendar cal, String pattern) { 380 return getSDFormat(pattern).format(cal.getTime()); 381 } 382 383 /** 384 * 指定日期按指定格式显示 385 * 386 * @param date 387 * 指定的日期 388 * @param pattern 389 * 指定的格式 390 * @return 指定日期按指定格式显示 391 */ 392 public static String formatDate(Date date, String pattern) { 393 return getSDFormat(pattern).format(date); 394 } 395 396 // //////////////////////////////////////////////////////////////////////////// 397 // formatTime 398 // 将日期按照一定的格式转化为字符串 399 // //////////////////////////////////////////////////////////////////////////// 400 401 /** 402 * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分 403 * 404 * @return 默认日期按“年-月-日 时:分“格式显示 405 */ 406 public static String formatTime() { 407 return time_sdf.format(getCalendar().getTime()); 408 } 409 /** 410 * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分:秒 411 * 412 * @return 默认日期按“年-月-日 时:分:秒“格式显示 413 */ 414 public static String formatTimeyyyyMMddHHmmss(long millis) { 415 return datetimeFormat.format(new Date(millis)); 416 } 417 /** 418 * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分 419 * 420 * @param millis 421 * 指定的毫秒数 422 * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示 423 */ 424 public static String formatTime(long millis) { 425 return time_sdf.format(new Date(millis)); 426 } 427 428 /** 429 * 指定日期的默认显示,具体格式:年-月-日 时:分 430 * 431 * @param cal 432 * 指定的日期 433 * @return 指定日期按“年-月-日 时:分“格式显示 434 */ 435 public static String formatTime(Calendar cal) { 436 return time_sdf.format(cal.getTime()); 437 } 438 439 /** 440 * 指定日期的默认显示,具体格式:年-月-日 时:分 441 * 442 * @param date 443 * 指定的日期 444 * @return 指定日期按“年-月-日 时:分“格式显示 445 */ 446 public static String formatTime(Date date) { 447 return time_sdf.format(date); 448 } 449 450 // //////////////////////////////////////////////////////////////////////////// 451 // formatShortTime 452 // 将日期按照一定的格式转化为字符串 453 // //////////////////////////////////////////////////////////////////////////// 454 455 /** 456 * 默认方式表示的系统当前日期,具体格式:时:分 457 * 458 * @return 默认日期按“时:分“格式显示 459 */ 460 public static String formatShortTime() { 461 return short_time_sdf.format(getCalendar().getTime()); 462 } 463 464 /** 465 * 指定毫秒数表示日期的默认显示,具体格式:时:分 466 * 467 * @param millis 468 * 指定的毫秒数 469 * @return 指定毫秒数表示日期按“时:分“格式显示 470 */ 471 public static String formatShortTime(long millis) { 472 return short_time_sdf.format(new Date(millis)); 473 } 474 475 /** 476 * 指定日期的默认显示,具体格式:时:分 477 * 478 * @param cal 479 * 指定的日期 480 * @return 指定日期按“时:分“格式显示 481 */ 482 public static String formatShortTime(Calendar cal) { 483 return short_time_sdf.format(cal.getTime()); 484 } 485 486 /** 487 * 指定日期的默认显示,具体格式:时:分 488 * 489 * @param date 490 * 指定的日期 491 * @return 指定日期按“时:分“格式显示 492 */ 493 public static String formatShortTime(Date date) { 494 return short_time_sdf.format(date); 495 } 496 497 // //////////////////////////////////////////////////////////////////////////// 498 // parseDate 499 // parseCalendar 500 // parseTimestamp 501 // 将字符串按照一定的格式转化为日期或时间 502 // //////////////////////////////////////////////////////////////////////////// 503 504 /** 505 * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 506 * 507 * @param src 508 * 将要转换的原始字符窜 509 * @param pattern 510 * 转换的匹配格式 511 * @return 如果转换成功则返回转换后的日期 512 * @throws ParseException 513 * @throws AIDateFormatException 514 */ 515 public static Date parseDate(String src, String pattern) 516 throws ParseException { 517 return getSDFormat(pattern).parse(src); 518 519 } 520 521 /** 522 * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 523 * 524 * @param src 525 * 将要转换的原始字符窜 526 * @param pattern 527 * 转换的匹配格式 528 * @return 如果转换成功则返回转换后的日期 529 * @throws ParseException 530 * @throws AIDateFormatException 531 */ 532 public static Calendar parseCalendar(String src, String pattern) 533 throws ParseException { 534 535 Date date = parseDate(src, pattern); 536 Calendar cal = Calendar.getInstance(); 537 cal.setTime(date); 538 return cal; 539 } 540 541 public static String formatAddDate(String src, String pattern, int amount) 542 throws ParseException { 543 Calendar cal; 544 cal = parseCalendar(src, pattern); 545 cal.add(Calendar.DATE, amount); 546 return formatDate(cal); 547 } 548 549 /** 550 * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 551 * 552 * @param src 553 * 将要转换的原始字符窜 554 * @param pattern 555 * 转换的匹配格式 556 * @return 如果转换成功则返回转换后的时间戳 557 * @throws ParseException 558 * @throws AIDateFormatException 559 */ 560 public static Timestamp parseTimestamp(String src, String pattern) 561 throws ParseException { 562 Date date = parseDate(src, pattern); 563 return new Timestamp(date.getTime()); 564 } 565 566 // //////////////////////////////////////////////////////////////////////////// 567 // dateDiff 568 // 计算两个日期之间的差值 569 // //////////////////////////////////////////////////////////////////////////// 570 571 /** 572 * 计算两个时间之间的差值,根据标志的不同而不同 573 * 574 * @param flag 575 * 计算标志,表示按照年/月/日/时/分/秒等计算 576 * @param calSrc 577 * 减数 578 * @param calDes 579 * 被减数 580 * @return 两个日期之间的差值 581 */ 582 public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) { 583 584 long millisDiff = getMillis(calSrc) - getMillis(calDes); 585 586 if (flag == 'y') { 587 return (calSrc.get(calSrc.YEAR) - calDes.get(calDes.YEAR)); 588 } 589 590 if (flag == 'd') { 591 return (int) (millisDiff / DAY_IN_MILLIS); 592 } 593 594 if (flag == 'h') { 595 return (int) (millisDiff / HOUR_IN_MILLIS); 596 } 597 598 if (flag == 'm') { 599 return (int) (millisDiff / MINUTE_IN_MILLIS); 600 } 601 602 if (flag == 's') { 603 return (int) (millisDiff / SECOND_IN_MILLIS); 604 } 605 606 return 0; 607 } 608 /** 609 * String类型 转换为Date, 610 * 如果参数长度为10 转换格式”yyyy-MM-dd“ 611 *如果参数长度为19 转换格式”yyyy-MM-dd HH:mm:ss“ 612 * * @param text 613 * String类型的时间值 614 */ 615 public void setAsText(String text) throws IllegalArgumentException { 616 if (StringUtils.hasText(text)) { 617 try { 618 if (text.indexOf(":") == -1 && text.length() == 10) { 619 setValue(this.date_sdf.parse(text)); 620 } else if (text.indexOf(":") > 0 && text.length() == 19) { 621 setValue(this.datetimeFormat.parse(text)); 622 } else { 623 throw new IllegalArgumentException( 624 "Could not parse date, date format is error "); 625 } 626 } catch (ParseException ex) { 627 IllegalArgumentException iae = new IllegalArgumentException( 628 "Could not parse date: " + ex.getMessage()); 629 iae.initCause(ex); 630 throw iae; 631 } 632 } else { 633 setValue(null); 634 } 635 } 636 public static int getYear(){ 637 GregorianCalendar calendar=new GregorianCalendar(); 638 calendar.setTime(getDate()); 639 return calendar.get(Calendar.YEAR); 640 } 641 642 public static void main(String[] args) throws ParseException { 643 System.out.println(DateUtils.formatTimeyyyyMMddHHmmss(1462666089 * 1000L)); 644 System.out.println(DateUtils.getMillis(DateUtils.parseDate("2016-07-08 08:08:09", "yyyy-mm-dd hh:mm:ss"))); 645 } 646 }