Java中Date类型详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java中Date类型详解
⼀、Date类型的初始化
1、 Date(int year, int month, int date); 直接写⼊年份是得不到正确的结果的。
因为java中Date是从1900年开始算的,所以前⾯的第⼀个参数只要填⼊从1900年后过了多少年就是你想要得到的年份。
⽉需要减1,⽇可以直接插⼊。
这种⽅法⽤的⽐较少,常⽤的是第⼆种⽅法。
2、这种⽅法是将⼀个符合特定格式,⽐如yyyy-MM-dd,的字符串转化成为Date类型的数据。
⾸先,定义⼀个Date类型的对象 Date date = null; 再定义⼀个String类型的符合格式的字符串 String dateStr = "2010-9-10";把这个字符串进⾏拆分 String[ ] dateDivide = dateStr.split("-"); 把年⽉⽇分别取出,赋给Calendar,⽤ Calendar的getTime();取得⽇期再赋给date。
例如:
if(dateDivide.length==3){
int year = Integer.parseInt(dateDivide [0].trim());//去掉空格
int month = Integer.parseInt(dateDivide [1].trim());
int day = Integer.parseInt(dateDivide [2].trim());
Calendar c = Calendar.getInstance();//获取⼀个⽇历实例
c.set(year, month-1, day);//设定⽇历的⽇期
date = c.getTime();
}
⼆、Date类型的⽐较
Date a;
Date b;
假设现在你已经实例化了a和b
a.after(b)返回⼀个boolean,如果a的时间在b之后(不包括等于)返回true
b.before(a)返回⼀个boolean,如果b的时间在a之前(不包括等于)返回true
a.equals(b)返回⼀个boolean,如果a的时间和b相等返回true
三、Date类型常⽤的操作函数
1// 1.计算某⼀⽉份的最⼤天数
2 Calendar time = Calendar.getInstance();
3 time.clear();
4 time.set(Calendar.YEAR, year); // year 为 int
5 time.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认⼀⽉为0
6int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本⽉份的天数
7// 注:在使⽤set⽅法之前,必须先clear⼀下,否则很多信息会继承⾃系统当前时间
8// 2.Calendar和Date的转化
9// (1) Calendar转化为Date Calendar
10 cal = Calendar.getInstance();
11 Date date = cal.getTime();
12// (2) Date转化为Calendar
13 Date date = new Date();
14 Calendar cal = Calendar.getInstance();
15 cal.setTime(date);
16// 3.格式化输出⽇期时间(这个⽤的⽐较多)
17 Date date = new Date();
18 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
19 String time = df.format(date);
20 System.out.println(time);
21// 4.计算⼀年中的第⼏星期
22// (1)计算某⼀天是⼀年中的第⼏星期
23 Calendar cal = Calendar.getInstance();
24 cal.set(Calendar.YEAR, 2006);
25 cal.set(Calendar.MONTH, 8);
26 cal.set(Calendar.DAY_OF_MONTH, 3);
27int weekno = cal.get(Calendar.WEEK_OF_YEAR);
28// (2)计算⼀年中的第⼏星期是⼏号
29 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
30 Calendar cal = Calendar.getInstance();
31 cal.set(Calendar.YEAR, 2006);
32 cal.set(Calendar.WEEK_OF_YEAR, 1);
33 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
34 System.out.println(df.format(cal.getTime()));//输出:2006-01-02
35// 5.add()和roll()的⽤法(不太常⽤)
36// (1)add()⽅法
37 SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");
38 Calendar cal = Calendar.getInstance();
39 cal.set(Calendar.YEAR, 2006);
40 cal.set(Calendar.MONTH, 8);
41 cal.set(Calendar.DAY_OF_MONTH, 3);
42 cal.add(Calendar.DATE, -4);
43 Date date = cal.getTime();
44 System.out.println(df.format(date));
45 cal.add(Calendar.DATE, 4);
46 date = cal.getTime();
47 System.out.println(df.format(date));//输出:2006-08-30 2006-09-03
48//(2)roll⽅法
49 cal.set(Calendar.YEAR, 2006);
50 cal.set(Calendar.MONTH,8);
51 cal.set(Calendar.DAY_OF_MONTH,3);
52 cal.roll(Calendar.DATE, -4);
53 date=cal.getTime();
54 System.out.println(df.format(date));
55 cal.roll(Calendar.DATE,4);
56 date=cal.getTime();
57 System.out.println(df.format(date));//输出:2006-09-292006-09-03
58// 可见,roll()⽅法在本⽉内循环,⼀般使⽤add()⽅法;
⼀、Date类型的初始化
1、 Date(int year, int month, int date); 直接写⼊年份是得不到正确的结果的。
因为java中Date是从1900年开始算的,所以前⾯的第⼀个参数只要填⼊从1900年后过了多少年就是你想要得到的年份。
⽉需要减1,⽇可以直接插⼊。
这种⽅法⽤的⽐较少,常⽤的是第⼆种⽅法。
2、这种⽅法是将⼀个符合特定格式,⽐如yyyy-MM-dd,的字符串转化成为Date类型的数据。
⾸先,定义⼀个Date类型的对象 Date date = null; 再定义⼀个String类型的符合格式的字符串 String dateStr = "2010-9-10";把这个字符串进⾏拆分 String[ ] dateDivide = dateStr.split("-"); 把年⽉⽇分别取出,赋给Calendar,⽤ Calendar的getTime();取得⽇期再赋给date。
例如:
⼆、Date 类型的⽐较
Date a;
Date b;
假设现在你已经实例化了a 和b
a.after(b)返回⼀个boolean ,如果a 的时间在b 之后(不包括等于)返回true
b.before(a)返回⼀个boolean ,如果b 的时间在a 之前(不包括等于)返回true a.equals(b)返回⼀个boolean,如果a 的时间和b 相等返回true
三、Date 类型常⽤的操作函数1
2
3
4
5
6
7
8if (dateDivide.length==3){ int year = Integer.parseInt(dateDivide [0].trim());//去掉空格 int month = Integer.parseInt(dateDivide [1].trim()); int day = Integer.parseInt(dateDivide [2].trim()); Calendar c = Calendar.getInstance();//获取⼀个⽇历实例 c.set(year, month-1, day);//设定⽇历的⽇期 date = c.getTime(); }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58// 1.计算某⼀⽉份的最⼤天数Calendar time = Calendar.getInstance();time.clear();time.set(Calendar.YEAR, year); // year 为 int time.set(Calendar.MONTH, i - 1);// 注意,Calendar 对象默认⼀⽉为0int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本⽉份的天数// 注:在使⽤set ⽅法之前,必须先clear ⼀下,否则很多信息会继承⾃系统当前时间// 2.Calendar 和Date 的转化// (1) Calendar 转化为Date Calendar cal = Calendar.getInstance();Date date = cal.getTime();// (2) Date 转化为Calendar Date date = new Date();Calendar cal = Calendar.getInstance();cal.setTime(date);// 3.格式化输出⽇期时间(这个⽤的⽐较多)Date date = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String time = df.format(date);System.out.println(time);// 4.计算⼀年中的第⼏星期// (1)计算某⼀天是⼀年中的第⼏星期Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);int weekno = cal.get(Calendar.WEEK_OF_YEAR);// (2)计算⼀年中的第⼏星期是⼏号SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.WEEK_OF_YEAR, 1);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(df.format(cal.getTime()));//输出:2006-01-02// 5.add()和roll()的⽤法(不太常⽤)// (1)add()⽅法SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);cal.add(Calendar.DATE, -4);Date date = cal.getTime();System.out.println(df.format(date));cal.add(Calendar.DATE, 4);date = cal.getTime();System.out.println(df.format(date));//输出:2006-08-30 2006-09-03//(2)roll ⽅法cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH,8);cal.set(Calendar.DAY_OF_MONTH,3);cal.roll(Calendar.DATE, -4);date=cal.getTime();System.out.println(df.format(date));cal.roll(Calendar.DATE,4);date=cal.getTime();System.out.println(df.format(date));//输出:2006-09-292006-09-03// 可见,roll()⽅法在本⽉内循环,⼀般使⽤add()⽅法;。