java的Calendar对象需要注意的问题
java的Calendar对象需要注意的问题:
1.每周是从周日开始算的
周日算每周的第一天,周六算每周的最后一天。
十二月:
日 一 二 三 四 五 六
13 14 15 16 17 18 19
20 21 …
这个引发出的问题,如果计算12月17日这一周的周六周日的日期,咱们期望得到的是:
周六:12月19日,周日:12月20日,
但是实际呢?
周六:12月19日,周日:12月13日
为什么呢?因为周日是这周的第一天,所以就这样了,在咱们得到这个值后,还需要进行处理,才能按照咱们的习惯使用。
2.接着第一个问题,那咱们能不能把每周的周一定为每周的第一天呢?
Calendar有这样一个方法,setFirstDayOfWeek()
我曾经这样使用:
Calendar c = Calendar.getIntance();
c.setFirstDayOfWeek(Calendar.MONDAY);
从表面很好理解,设定c对象的每周的第一天是周一,其实不然!
Calendar.MONDAY这个常量值就是2,不可改变。
3.每年中的月份不是1-12月,是0-11月。
4.从Date转换到Calendar用如下方法:
Date d = new Date();
Calendar c = Calendar.getIntance();
c.setTime(d);
5.从Calendar转换到Date用如下方法:
Calendar c = Calendar.getIntance();
c.getTime();
6.常用的方法
在YP2G_CreditPay这个项目中,有两个文件,
/YP2G_CreditPay/src/java/com/yeepay/credit/common/CommonDate.java
/YP2G_CreditPay/src/java/com/yeepay/credit/common/CommonDateConvert.java
其中CommonDate是常用对日期操作的方法。
CommonDateConvert是对String,Date,Calendar对象互相转换的方法,
可以提供给大家使用。
下面简单的说一下CommonDate主要的一些方法。
//传入一个日期,比较是否在后两个日期的区间之中
CommonDate.isDayInSections(Calendar compareDate, Calendar beginDate, Calendar endDate)
//返回周几的具体日期
CommonDate.getCalendarByDayOfWeek(int dayOfWeek)
CommonDate.getCalendarByDayOfWeek(int dayOfWeek, Calendar calendar)
//返回calendar对象所在的这一月中,这个月的第几天的具体日期
CommonDate.getCalendarByDayOfMonth(int dayOfMonth)
CommonDate.getCalendarByDayOfMonth(int dayOfMonth, Calendar calendar)
//给出星期几,返回离当前日期未来最近的那个星期几的日期
CommonDate.getCalendarByNearlyDayOfWeek(int dayOfWeek)
//给出一个月中的第几天,返回离当前日期最近的那个星期月的那天的日期
CommonDate.getCalendarByNearlyDayOfMonth(int dayOfMonth)
//在传入的日期的基础上向后推算一天
CommonDate.addOneDayToSuspendedDate(Calendar date)
//在传入的日期的基础上向前推算一天
CommonDate.reduceOneDayToSuspendedDate(Calendar date)
//在传入的日期的基础上向后推算N天
CommonDate.addSomeDaysToSuspendedDate(Calendar date, int days)
//返回一个Calendar对象,这个Calendar对象的时区被设置为GMT+8
CommonDate.getCalendar()
//将Calendar对象设置为0点0分0秒
CommonDate.setTimeToZero(Calendar calendar)
//为传入的每周的第几天+1天,来适应Calendar对象将周日作为每周第一天的需求
CommonDate.addOneDayForCalendarWeek(int dayOfWeek)
7.可供参考的资料:
Date类学习总结(Calendar Date 字符串 相互转换 格式化)
hi.baidu.com/jiangpanfeixue/blog/item/4b778603931c16723812bb1b.html
JAVA的Date类与Calendar类
www.cnblogs.com/springcsc/archive/2009/12/03/1616347.html
Calendar 类的setFirstDayOfWeek 方法详解
ajava.org/course/java/17121.html
关于java的calendar类和date类
zhidao.baidu.com/question/56621584.html
还有白玮的有一次关于JAVA日期时间的分享,昨天我又翻了一遍,还是很有用的。我一并打包成zip包放在附件里了。
附件见这里:
java的日期和时间
Leave a Message
No Messages
RSS feed for comments on this post. TrackBack URI
我的简介: 谁说tmd巨蟹座傻来的?我就是tmd巨蟹里边儿最聪明的!!!