Java中Date类型详解
Posted zl520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 6 int 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); 27 int 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。
例如:
1
2
3
4
5
6
7
8
|
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
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对象默认一月为0 int 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()方法; |
以上是关于Java中Date类型详解的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段