黑马程序员JAVA篇----日期格式化

对日期的处理,不管对于何种语言来说都是非常重要的,在java中若要处理来自世界各地的日期,则至少要熟悉java.text和java.util包中的四种类。

即以下四种:

  1. java.util.Date.
  2. java.util.Calendar.
  3. java.text.DateFormat.
  4. java.util.Local.

Date类虽在操作时间处理里已不推荐使用,但却是作为Calendar类与DateFormat类之间的桥梁。Date的一个实例表示可变的日期和时间。

Calendar类已取代Date类完成对时间的处理,此类提供大量的方法用以帮助转换和操作日期或时间。比如为给定的日期添加月份,或者查看某一日期是星期几。

DateFormat类完成对日期的格式化,不仅提供了诸如'11/21/12'等格式化,而且可以格式化成全世界众多地区的日期。

Local类与DateFormat结合,用于格式化特定地区的日期。

实际对日期操作的应用:

Date:

如果仅仅是获取当前日期时间的话,Date类完全可以做到:

import java.util.*;
class TestDates{
  public static void main(String args[]){
             Date d1 = new Date();
             System.out.println("1st date"+d1.toString());  
}          
}

注意,这是获取当前时间,如若设置特定日期时间,可以在初始化或方法setTime中传入时间戳参数:

import java.util.*;
class TestDates{
     public static void main(String args[] ){
          Date d1 = new Date(10000000000000L);
          System.out.println("1st date "+d1.toString());
          d1.setTime(d1.getTime()+36000000);
           System.out.prinltn(d1.toString());
} 

}

可以看到,如果添加1年到给定的日期将很麻烦,所以对于操作时间处理,已用Calendar类。

Calendar类:

首先要注意的是Calendar是一个抽象类,所以不能这样写Calendar dar = new Calednar();

必须使用重载的getInstance()静态工厂方法之一:

Calendar cal = Calendar.getInstance();

得到Calendar引用cal时其实是Calendar子类的实例(java.util.GregorianCalendar)。

实例:

import java.util.*;
class Date2{
     public static void main(String args[]){
          Date d1 = new Date(10000000000L);
          System.out.println("1st date "+d1.toString());
          Calendar c = Calendar.getInstance();
          c.setTime(d1);
          if(Calendar.SUNDAY == c.getFirstDayOfWeek()){
              System.out.println("星期天是第一天");
}  else{
             System.out.println("星期天不是第一天");
}
          System.out.println("这是一星期的第"+c.get(Calendar.DAY_OF_WEEK)+"天");
           c.add(Calendar.MONTH,1)  //对日期的操作,MONTH默认从0开始
          Date d2 = c.getTime();
          System.out.println(d2.toString());  
}

}

可以看到Calendar对时间的处理实际为对Date实例的处理。

注意,Calendar中还有一个roll()方法,与add()类似,但不影响其他日期字段。

DateForamt类

创建并操作完日期后便是格式化他们。

首先DateFormat类与Calendar类一样,都是抽象类,所以要使用两个工厂方法:getInstance()和getDateInstance(),利用静态字段定制各种DateFormat实例。

import java.text.DateFormat;
import java.util.Date;

public class Dates3 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Date d1 = new Date(100000000000000L);
        DateFormat[] dfa = new DateFormat[5];
        dfa[0] = DateFormat.getInstance();
        dfa[1] = DateFormat.getDateInstance(DateFormat.SHORT);
        dfa[2] = DateFormat.getDateInstance(DateFormat.MEDIUM);
        dfa[3] = DateFormat.getDateInstance(DateFormat.LONG);
        dfa[4] = DateFormat.getDateInstance(DateFormat.FULL);
        for (DateFormat df : dfa) {
            System.out.println(df.format(d1));
        }
    }
}

也可以自定义格式化,即SimpleDateForamt类

import java.text.SimpleDateFormat;
import java.util.Date;

public class exmaple {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(sdf.format(d));
    }

}

 

Local类

主要完成国际化操作,来定制某个特定地区的格式化输出。

构造方法:

Local(String language)

Local(String language,String country)

而使用一般作为DateFormat.getInstance的一个参数使用:

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class example2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2012, 11, 21);
        Date d2 = c.getTime();
        Locale locIT = new Locale("it", "IT"); // Italy国家
        DateFormat dfa = DateFormat.getDateInstance(DateFormat.FULL, locIT);
        System.out.println(dfa.format(d2));
    }

}
posted @ 2012-11-21 15:20  天堂木乃伊  阅读(161)  评论(0)    收藏  举报