黑马程序员JAVA篇----日期格式化
对日期的处理,不管对于何种语言来说都是非常重要的,在java中若要处理来自世界各地的日期,则至少要熟悉java.text和java.util包中的四种类。
即以下四种:
- java.util.Date.
- java.util.Calendar.
- java.text.DateFormat.
- 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)); } }
浙公网安备 33010602011771号