JAVA认证考试:Java中Date各种用法:
/ g' X. O" E- Y: P1.计算某一月份的最大天数
! X: Q2 O' ]" K Java代码& n7 T4 i& S9 q- S8 r1 s
Calendar time=Calendar.getInstance();7 f( a g' R; L" B
time.clear();5 T% T/ u) f$ }+ j
time.set(Calendar.YEAR,year);
6 z5 T% I" Z0 |, }# a7 B2 m& P time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0% J3 T, j2 n* l
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数: H q8 l, o! d/ i
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
& D8 u' M3 h$ S; H! q# V" Z3 a0 q/ d 2.Calendar和Date的转化
" j, _5 h" k, S7 r, W (1) Calendar转化为Date: x6 h) o# F3 i: c
Java代码
6 g% W2 h* y$ B+ U0 O: y/ G+ Q, S- F Calendar cal=Calendar.getInstance();
. Q& s% k* }4 t0 r. z Date date=cal.getTime();- N9 h; O) w; n3 `
(2) Date转化为Calendar" m+ Z0 f1 I9 Q: X. }: Q- G, l. u
Java代码
2 N" I" I4 p2 A( X Date date=new Date();
$ T5 ~/ Y" \ H$ A2 R Calendar cal=Calendar.getInstance();4 q2 s* u& U. a" i
cal.setTime(date);
: l- @9 Z' y* }/ {* x5 { 3.格式化输出日期时间! R' X5 u3 ^2 H& j0 F! w" J
Java代码4 i# Z" X T g9 n% j7 _
Date date=new Date();
' L3 d5 [9 M( a- T- G( f/ t" K. } SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
5 g# e3 \, K- V0 `& C System.out.println(df.format(date));
/ T- _; L1 @: O7 z 4.计算一年中的第几星期
# C d, j0 ~0 `/ _1 @1 | (1)计算某一天是一年中的第几星期 ~$ r; R' m" A5 O1 M4 L6 @
Java代码6 Q0 s$ W" w9 N
Calendar cal=Calendar.getInstance();
; o% ]0 `1 x# F& }* l/ k# ~5 Z ~ cal.set(Calendar.YEAR, 2006);7 `! Q" k3 q/ C4 h+ O$ `
cal.set(Calendar.MONTH, 8);7 B' F ?$ P" }" t, y6 K# a
cal.set(Calendar.DAY_OF_MONTH, 3);
, T, T: T6 c) v" O# u int weekno=cal.get(Calendar.WEEK_OF_YEAR);
2 M* J! M2 G8 x% b (2)计算一年中的第几星期是几号9 E" W& Z7 U- B1 j, _8 t) f/ R. Q5 e
Java代码9 O" `+ I1 k3 P: q
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
6 g! M- r. c" E Calendar cal=Calendar.getInstance();
" A# x6 G3 w1 g( U cal.set(Calendar.YEAR, 2006);
5 e( I' H. P# ^4 k: c3 F, N cal.set(Calendar.WEEK_OF_YEAR, 1);
2 _$ `& Q/ L" x+ x cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);" U' ]5 h; H+ w* P( {7 e/ c
System.out.println(df.format(cal.getTime()));
: s3 o) Z0 E: Z4 I9 t 输出:2 T5 R! v* P" i( z) A
2006-01-02
) I' k3 g# @6 p 5.add()和roll()的用法7 M9 u/ s) ]1 O6 k3 n. Q& Y
(1)add()方法
9 n* |) F6 j" K) R9 Y7 v Java代码
1 M$ M; l" A G9 v SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");* b/ J8 X7 t4 m
Calendar cal=Calendar.getInstance();
Z" ^, i+ p1 \7 P2 k: L) ^ cal.set(Calendar.YEAR, 2006);2 G% t' w4 W3 M u4 ]
cal.set(Calendar.MONTH, 8);3 i- ]# \& Y$ g9 D0 G
cal.set(Calendar.DAY_OF_MONTH, 3);
9 a8 \( H9 w5 H) r1 V" V- y3 o cal.add(Calendar.DATE, -4);& e7 ~: S* [7 I" S
Date date=cal.getTime();" l; @! a% {' P+ Z# _& g
System.out.println(df.format(date));+ N7 V4 b( q* Z! c% z! {8 m% p
cal.add(Calendar.DATE, 4);
- Y$ j- l, _; b! S1 v date=cal.getTime();+ G8 l6 f. _8 Z$ b; E
System.out.println(df.format(date));
0 j- L* y' C. O' M 输出:
) U# U! ~: Y% m$ `6 |; l/ n 2006-08-30
$ F. i) e* j4 g1 a 2006-09-03
c( Z0 @1 K' Q9 N I! i0 g3 {& z/ ~ (2)roll方法! h4 M; D* c. ~: V1 \
Java代码5 a6 H0 f" q' u! B9 p% Y% q
cal.set(Calendar.YEAR, 2006);
% o& W/ {* F* d0 p3 C% w cal.set(Calendar.MONTH, 8);
/ h. C7 F' r& ]/ M5 V) L cal.set(Calendar.DAY_OF_MONTH, 3);% ^* l! E# F! v* N
cal.roll(Calendar.DATE, -4);( H+ |4 ~# }" I8 G
date=cal.getTime();
' t2 `+ M# v9 N5 x: p# f; W System.out.println(df.format(date));
, p8 [; F% d( G( F1 M cal.roll(Calendar.DATE, 4);
1 K5 ^! V' M6 R6 ]& o" Y! m date=cal.getTime();0 K6 T4 \1 V) a+ l H
System.out.println(df.format(date));+ f7 Y" Z$ ]" h9 B1 U! m0 a1 d
输出:
" ^, g0 Q$ u0 j0 R$ Y) [8 C' g4 f 2006-09-29& i, D- f& l' u h5 H
2006-09-03
/ ^' T5 J8 i' {- P7 |+ `$ x* ~1 R5 } 可见,roll()方法在本月内循环,一般使用add()方法; |