Java中日期的处理方法

发布时间:2016-12-02 00:00:00 编辑:嘉辉 手机版

  四、使用标准的日期格式化过程

  既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程。 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过程。 在下面的例子中, 我们获取了四个内建的日期格式化过程。 它们包括一个短的, 中等的, 长的, 和完整的日期格式。

  import java.text.DateFormat;

  import java.util.Date;

  public class DateExample4 {

  public static void main(String[] args) {

  Date date = new Date();

  DateFormat shortDateFormat =

  DateFormat.getDateTimeInstance(

  DateFormat.SHORT,

  DateFormat.SHORT);

  DateFormat mediumDateFormat =

  DateFormat.getDateTimeInstance(

  DateFormat.MEDIUM,

  DateFormat.MEDIUM);

  DateFormat longDateFormat =

  DateFormat.getDateTimeInstance(

  DateFormat.LONG,

  DateFormat.LONG);

  DateFormat fullDateFormat =

  DateFormat.getDateTimeInstance(

  DateFormat.FULL,

  DateFormat.FULL);

  System.out.println(shortDateFormat.format(date));

  System.out.println(mediumDateFormat.format(date));

  System.out.println(longDateFormat.format(date));

  System.out.println(fullDateFormat.format(date));

  }

  }

  注意我们在对 getDateTimeInstance的每次调用中都传递了两个值。 第一个参数是日期风格, 而第二个参数是时间风格。 它们都是基本数据类型int(整型)。 考虑到可读性, 我们使用了DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道获取时间和日期格式化过程的更多的方法和选项, 请看Sun 公司Web 站点上的解释。

  运行我们的例子程序的时候, 它将向标准输出设备输出下面的内容:

  9/29/01 8:44 PM

  Sep 29, 2001 8:44:45 PM

  September 29, 2001 8:44:45 PM EDT

  Saturday, September 29, 2001 8:44:45 PM EDT

  五、Calendar 类r

  我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用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

  六、时间掌握在你的手里r

  有了这些Date 和Calendar 类的例子,你应该能够使用 java.util.Date,java.text.SimpleDateFormat,和 java.util.GregorianCalendar 创建许多方法了。

下页更精彩:首页 上一页 1 2
本文已影响867
+1
0