a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 259|回复: 3

[基础知识] 一个关于日期常用操作工具

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
public class DateUtils {
1 D) I- s5 s" a3 ^  ~: z  /** , G4 r9 H2 }) P% x* D* p
  * 获取当前时间日期的字符串 ' \9 _6 g& ^& ~0 U
  */
3 B3 ?! x$ t) r& _9 e" e  public static String getCurrentDateStr(DateFormatType dateFormatType) { 2 z5 q1 v5 ^$ ~- {; {
  Date date = getCurrentDate(); # o9 Q" B, l! L, N  |
  return (String) OpearationDate(date, dateFormatType.getValue()); : l2 t# [7 ]4 J, d/ j. P
  }
/ H' [8 f- i( E, G& C  /**
  D8 j6 R: k0 {  Q3 w  * 时间、日期格式化成字符串
2 \/ P4 }( K, M* w) q. `1 P3 @  */
( ~+ a# u# O; g( R7 k( p3 j  public static String formatDate(Date date, DateFormatType dateFormatType) {
6 p  s* D; H' n: Y. |  return (String) OpearationDate(date, dateFormatType.getValue());
6 W5 ^. J$ Q1 C+ n  } % b, h% e  A+ E2 b8 f# i4 ]) o6 a
  /**
! U* x: E, `) u7 G7 K3 |  V  * 从字符串解析成时间、日期 7 e7 z* _. l& v- Y8 y
  */ " s( D! e3 M5 |, G1 B
  public static Date parseDate(String dateStr, DateFormatType dateFormatType) { ; Z2 Q4 r- Q0 c
  return (Date) OpearationDate(dateStr, dateFormatType.getValue()); ) r3 s6 s& g+ u7 m2 g
  }
7 K' k: t  ^7 x  /** ! W% R3 s  ?. Y/ N7 e
  * 获取当前系统时间(原始格式)
* i8 @' ?. P, u  */ 6 n" ^' K) @7 h$ b" [  K( D$ M5 n& e
  public static Date getCurrentDate() { - `8 D2 ?* C5 p! e
  Date date = new Date(System.currentTimeMillis());
2 ]' O. G2 q. j' z  return date;
, N: x( `# q+ R7 M# ^; l1 l, ?  } 4 e# k8 ?; D9 I
  /**
1 Z1 y# b+ b- j/ ~* f4 p7 [- H  * 获取当前日期的年、月、日、时、分、秒 : T+ S8 s0 Q/ G8 j
  */
' g8 W. s! F& \0 m  public static int getCurrentTime(TimeFormatType timeFormatType) {
0 K& z; h" x  T  return getTime(getCurrentDate(), timeFormatType); # o$ G/ k* _5 `) p) A
  } % ^5 U; S: T6 `  Z  o
  /** 6 h/ c% Q/ W3 K: F
  * 获取指定日期的年、月、日、时、分、秒   i" n7 e* `! l" z) {9 K
  */ 0 b# ^/ t- `. q. i# r# R8 |" Y1 w
  public static int getTime(Date date, TimeFormatType timeFormatType) { 2 R( |0 N+ U! b1 j2 j
  try {
& ~" g9 T  ?4 z% B" A  Calendar c = Calendar.getInstance(); 2 o7 _' ^3 i" U$ D
  c.setTime(date);
. Y" q- ^% @( c  int type = timeFormatType.getValue(); - J$ ]# a/ `; f, |/ N  O9 k& \6 b
  int I = c.get(type);
9 @4 R* G8 p8 F  M; E5 ?1 Q2 h6 q  return type == 2 ? I + 1 : I; % O$ m  X% M. ^! D, |7 I" H
  } catch (Exception e) { 4 M6 D6 _1 T: W0 Q7 s, M# ~
  throw new RuntimeException("获取失败", e);
! @. x5 i7 t2 g! l  }   }
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:28 | 显示全部楼层

一个关于日期常用操作工具

/** ( f( T0 C8 t2 g! Z9 ]: T2 w
  * 获取指定日期的毫秒数 1 _* S* R" k% r
  */
  |( T( ]/ a1 H! M/ R  public static long getMillis(Date date) {
8 M9 s. K8 }( q  java.util.Calendar c = java.util.Calendar.getInstance(); 1 D" o' W8 j5 O$ ~. A: F
  c.setTime(date);
: Q6 v: V+ y# p1 \; R. P  return c.getTimeInMillis(); 5 `+ @$ |& H( Y/ }% {4 y
  }
3 T% b( ~& p  R9 U$ E* k& L7 p  /** + F4 \+ U3 ?, J$ C+ w# @* Q7 m% c
  * 日期相加、减操作
! S; u( U. J* ]0 P/ Y/ H  *
6 ^, S1 |( n$ X! L" y  * 所返回结果单位为:天数 2 Y9 L8 ~" F; i
  */
% y6 B" n; }4 k9 B! }. |  public static int operationDate(Date date, Date diffDate, DateOperationType dateOperationType) { # u/ k$ S: [7 Y
  long add = getMillis(date) + getMillis(diffDate);
- _' f) L* q" D' w  S  long diff = getMillis(date) - getMillis(diffDate); 1 W7 R9 U4 I+ h/ `* R3 d& v
  return (int) ((dateOperationType.getValue() ? Add : diff) / (24 * 3600 * 1000)); . |5 k4 [( H5 l5 G2 l% g0 U
  }
/ p( w4 n. T0 Z8 ^0 o& j2 e  /** $ c/ P1 K( \* X% s7 p
  * 日期月份相加、减操作 : g" K, I5 Z+ Y$ F
  */
( k7 p6 j% a) [/ [+ F9 C  R  public static Date operationDateOfMonth(Date date, int month, DateOperationType dateOperationType) { 5 a3 |6 i! L5 o/ c+ h
  Calendar c = Calendar.getInstance();
' U: q4 d: z2 _  c.setTime(date); ' k! N8 s( C; ^* A1 B
  c.add(Calendar.MONTH, dateOperationType.getValue() ? Month : month - (month * 2)); % `/ H# d* i# z5 T0 f( ^) P
  return c.getTime(); 1 U3 R& O, _- ?9 E
  }
* L5 x, v7 @9 Y" g  /** 2 ^$ o1 x# ?; s! f& ?
  * 日期天数相加、减操作 $ d1 l  g" M* J$ v" K$ \. Y
  */ # b- a1 M- K5 U+ I6 n+ o5 Y
  public static Date operationDateOfDay(Date date, int day, DateOperationType dateOperationType) { 9 Z  M% e$ K; n* ^% r
  Calendar c = Calendar.getInstance(); ! @2 D+ U2 h% y+ r; Y0 A# k
  c.setTime(date);
! F6 p6 N( N( J! u! E( A4 v  long millis = c.getTimeInMillis();
4 N/ Q& d# B4 A/ ]  long millisOfday = day * 24 * 3600 * 1000; $ v" z  f' b; T
  long sumMillis = dateOperationType.getValue() ? (millis + millisOfday) : (millis - millisOfday); 6 X* ^( s. J0 |# {  F8 {
  c.setTimeInMillis(sumMillis);
2 Q0 V0 k$ X! Y3 I  return c.getTime();   }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:29 | 显示全部楼层

一个关于日期常用操作工具

 private static Object OpearationDate(Object object, String formatStr) {
3 u4 q+ W* [  Z+ o5 |6 p  Q  if (object == null || null == formatStr || "".equals(formatStr)) {
0 t) B2 x$ |& ~7 M, g  throw new RuntimeException("参数不能为空"); 3 `2 j$ V/ Q0 b: R" Q. d5 i" O
  } $ P& e! E2 E3 v$ y1 M
  SimpleDateFormat format = new SimpleDateFormat(formatStr); / A7 @( D" [) ?/ H8 S- ]: p3 ]
  try { ! S' @& L  ?, p# O
  if (object instanceof Date) / Y7 y- ]& t) l7 I/ z9 a. n
  return format.format(object); 1 d3 G2 O# m' O3 _" }
  else
+ K5 I+ U& J' A6 T; t9 p  return format.parse(object.toString()); / Q' Y# ^7 O6 w8 R. |$ S
  } catch (Exception e) {
% K9 {- O) C" F! H, W: R  throw new RuntimeException("操作失败", e);
" K1 S; }# K0 e" l  }
7 p, _% ]% T, R* B2 _. p0 p1 B8 H/ ]2 t  } 2 x( j5 E+ `- m) i, h
  public enum DateOperationType { ; C' w# N" b: n2 K
  /**
# C. u% D- M4 d& G; R  * 加操作 ' g+ E$ c) D0 ]! M# Y  n
  */
) r/ x* H; |2 c. c0 w' F  ADD(true),
# s  h# F0 E9 @9 l( s1 Y7 Q  /**
9 f8 {$ Z6 F, c8 I4 f  * 减操作
' R9 x* j0 |$ j8 y  */
' ]! k: v5 Q1 Q, Q" b$ P5 v6 E1 V0 Q  DIFF(false); 8 C* G, H: p9 M1 h# x
  private final boolean value;
2 H+ ]9 k: A, `8 ?9 F; t4 o  DateOperationType(boolean operation) {
9 \( p! K% N' p. E  this.value = operation;
! y: B$ h( ?, r4 i( U  }
2 x# F, P6 R, x& h  public boolean getValue() { ! q' Y5 |" v4 @" o( U
  return value; # |3 {, e' t( f/ j) Y8 t! ]! X
  }   }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:30 | 显示全部楼层

一个关于日期常用操作工具

 public enum TimeFormatType { ! Q9 \$ Y, d: m, m
  YEAR(1), MONTH(2), DAY(5), HOUR(11), MINUTE(12), SECOND(13); ! l8 B4 P" \5 Q) _3 ]3 y
  private final int value;   g- ~5 f) ?  `* [* _2 H  J
  TimeFormatType(int formatStr) { . N( F/ u* w% J' ?* C9 L2 K
  this.value = formatStr;
0 \0 B  h% j- A7 c$ e7 n  }
3 W* ~9 f/ H! _' q  public int getValue() {
+ U6 t, \! I/ i. t2 V' ?  y$ \9 @; k  return value;
" }2 ]4 W* g9 K# H% Q/ @  }
- N$ y3 _8 b! R  } # j8 y) v5 {7 c, {1 ~: }
  public enum DateFormatType { ( N% W7 C5 M- x- P# O
  /** , U7 W: [3 M/ j2 _/ D
  * 格式为:yyyy-MM-dd HH:mm:ss
% s8 ?$ l9 \! O0 u6 f! u0 ?  */ # b; c9 z. N) e
  DATE_FORMAT_STR("yyyy-MM-dd HH:mm:ss"),
5 ^" I  p4 k4 Q* Z  /** ' q" ?; h2 v1 V# j# f1 [
  * 格式为:yyyyMMddHHmmss " M9 g2 z( v% U/ z* G
  */ % B- G6 O+ P5 P3 i6 B
  SIMPLE_DATE_TIME_FORMAT_STR("yyyyMMddHHmmss"), . p: e% |5 X8 \: ]# O/ P
  /**
: M, a, j' Q" K( v; t: c  * 格式为:yyyy-MM-dd
* Q  f: ]7 g* B7 S  */
* ^$ R. [1 q5 b8 v; _% W8 D9 G  SIMPLE_DATE_FORMAT_STR("yyyy-MM-dd"),
! @3 r! E2 @: n- s; A8 M! \7 t  /** & i2 l% b. |) L- [
  * 格式为:yyyy/MM/dd
0 G9 v+ b; g! Z, z! F" ^  */ ; r! e2 b8 ]0 f& F! k, z! S
  SIMPLE_DATE_FORMAT_VIRGULE_STR("yyyy/MM/dd"), 7 M7 \, P, l  G4 Z
  /**
" H7 z6 V; K% G) ^- Y$ ]) Y. Z  * 格式为:HH:mm:ss 2 j* h4 H2 l4 x2 e4 A' f/ T
  */
  v2 d+ z+ D$ Y' C! A: r# c6 L  HOUR_MINUTE_SECOND("HH:mm:ss"),
. g3 k; F1 y6 `! V5 T7 S  /**
  G' L2 j8 T3 J3 h2 w  * 格式为:HH:mm 8 \' g- q0 r6 \0 i
  */ 6 I* S0 u9 y3 Z- Z9 u
  HOUR_MINUTE("HH:mm"); % d* \9 ?/ C! t9 m3 x
  private final String value;
2 t/ q+ C$ i$ @' I4 U  DateFormatType(String formatStr) {
1 k' E0 X2 T2 ^% ?/ ~  v; F! P  this.value = formatStr;
- K$ U+ K9 s* y+ N4 P  } 1 |! l7 @" C- ?
  public String getValue() {
+ S3 [  x8 R+ K4 t  return value; , p4 o% U0 e  G, W2 `
  } - l/ G3 w* S' W! U; y0 W$ @1 C. i
  }   }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-29 21:57 , Processed in 0.160457 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表