- 论坛徽章:
- 0
|
[转载]学习日期、日期格式、日期的解析和日期的计算[代码]
六、Calendar 类
我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类. 就如我们前面提到的那样, Calendar 类中的方法替代了Date 类中被人唾骂的方法.
假设你想要设置, 获取, 和操纵一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一天. 为了演示这个过程, 我们将使用具体的子类 java.util.GregorianCalendar. 考虑下面的例子, 它计算得到下面的第十个星期五是13号.
- import java.util.GregorianCalendar;
- import java.util.Date;
- import java.text.DateFormat;
- public class DateExample5 {
- public static void main(String[] args) {
- DateFormat dateFormat =
- DateFormat.getDateInstance(DateFormat.FULL);
- // Create our Gregorian Calendar.
- GregorianCalendar cal = new GregorianCalendar();
- // Set the date and time of our calendar
- // to the system&s date and time
- cal.setTime(new Date());
- System.out.println("System Date: " +
- dateFormat.format(cal.getTime()));
- // Set the day of week to FRIDAY
- cal.set(GregorianCalendar.DAY_OF_WEEK,
- GregorianCalendar.FRIDAY);
- System.out.println("After Setting Day of Week to Friday: " +
- dateFormat.format(cal.getTime()));
- int friday13Counter = 0;
- while (friday13Counter <= 10) {
- // Go to the next Friday by adding 7 days.
- cal.add(GregorianCalendar.DAY_OF_MONTH, 7);
- // If the day of month is 13 we have
- // another Friday the 13th.
- if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) {
- friday13Counter++;
- System.out.println(dateFormat.format(cal.getTime()));
- }
- }
- }
- }
复制代码
在这个例子中我们作了有趣的函数调用:
cal.set(GregorianCalendar.DAY_OF_WEEK,
GregorianCalendar.FRIDAY);
和:
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);
set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五. 注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性. add 方法让我们能够在日期上加上数值. 润年的所有复杂的计算都由这个方法自动处理.
我们这个例子的输出结果是:
System Date: Saturday, September 29, 2001
当我们将它设置成星期五以后就成了: Friday, September 28, 2001
Friday, September 13, 2002
Friday, December 13, 2002
Friday, June 13, 2003
Friday, February 13, 2004
Friday, August 13, 2004
Friday, May 13, 2005
Friday, January 13, 2006
Friday, October 13, 2006
Friday, April 13, 2007
Friday, July 13, 2007
Friday, June 13, 2008
七、时间掌握在你的手里
有了这些Date 和Calendar 类的例子, 你应该能够使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 创建许多方法了.
在下面的文章中, 我们将讨论更高级的Date 和 Calendar 类的使用技巧, 包括时区和国际化的格式. 我们还会考察两个日期类 java.sql.Date 和 java.util.Date 之间的区别. |
|