Java 时间日期使用 详细整理 --音

来源:互联网 发布:地址匹配算法 编辑:程序博客网 时间:2024/05/21 19:35

1.Date的API简介

Date() 分配 Date 对象并用当前时间初始化此对象,以表示分配它的时间(精确到毫秒)。
方法摘要
-------------
 boolean after(Date when)
          测试此日期是否在指定日期之后。
 
 boolean before(Date when)
          测试此日期是否在指定日期之前。
 
 Object clone()
          返回此对象的副本。
 
 int compareTo(Date anotherDate)
          比较两个日期的顺序。
 
 boolean equals(Object obj)
          比较两个日期的相等性。
 
 long getTime()
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
 
 int hashCode()
          返回此对象的哈希码值。
 
 void setTime(long time)
          设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
 
 String toString()
          把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:
          dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
          mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
          dd 是一月中的某一天(01 至 31),显示为两位十进制数。
          hh 是一天中的小时(00 至 23),显示为两位十进制数。
          mm 是小时中的分钟(00 至 59),显示为两位十进制数。
          ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
          zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
          yyyy 是年份,显示为 4 位十进制数

2.DateFormat抽象类的使用

//系统自定义格式
//获取日期格式对象。具体着默认的风格。 FULL LONG等可以指定风格。要格式化不同语言环境的日期,
可在 getDateInstance() 的调用中指定它。
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);

//如果风格是自定义的如何解决呢?
dateFormat = new SimpleDateFormat("yyyy--MM--dd");
String str_date = dateFormat.format(date);//按自定义格式输出

 
//还可使用 DateFormat 进行分析
dateFormat = new SimpleDateFormat("yyyy---MM---dd");
Date date = dateFormat.parse(str_date);
 //按自定义格式分析时间

使用 getDateInstance 来获得该国家的标准日期格式。
getTimeInstance 可获得该国家的时间格式。使用 getDateTimeInstance 可获得日期和时间格式。

3.SimpleDateFormat(DateFormat的直接子类)的使用

<span style="color:#cc33cc;">import java.util.Date;import java.util.Locale;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;public class TestSimpleDateFormat {public static void main(String args[]) throws ParseException {TestSimpleDateFormat test = new TestSimpleDateFormat();test.testDateFormat();}public void testDateFormat() throws ParseException {// 创建日期Date date = new Date();// 创建不同的日期格式DateFormat df1 = DateFormat.getInstance();DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");DateFormat df3 = DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA); // 产生一个指定国家指定长度的日期格式,长度不同,显示的日期完整性也不同DateFormat df4 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE",Locale.CHINA);DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEEEE",Locale.US);DateFormat df6 = new SimpleDateFormat("yyyy-MM-dd");DateFormat df7 = new SimpleDateFormat("yyyy年MM月dd日");// 将日期按照不同格式进行输出System.out.println("-------将日期按照不同格式进行输出------");System.out.println("按照Java默认的日期格式,默认的区域                      : "+ df1.format(date));System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE ,系统默认区域      :"+ df2.format(date));System.out.println("按照日期的FULL模式,区域设置为中文                      : "+ df3.format(date));System.out.println("按照指定格式 yyyy年MM月dd日 hh时mm分ss秒 EE ,区域为中文 : "+ df4.format(date));System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE ,区域为美国        : "+ df5.format(date));System.out.println("按照指定格式 yyyy-MM-dd ,系统默认区域                  : "+ df6.format(date));// 将符合该格式的字符串转换为日期,若格式不相配,则会出错Date date1 = df1.parse("07-11-30 下午2:32");Date date2 = df2.parse("2007-11-30 02:51:07 星期五");Date date3 = df3.parse("2007年11月30日 星期五");Date date4 = df4.parse("2007年11月30日 02时51分18秒 星期五");Date date5 = df5.parse("2007-11-30 02:51:18 Friday");Date date6 = df6.parse("2007-11-30");System.out.println("-------输出将字符串转换为日期的结果------");System.out.println(date1);System.out.println(date2);System.out.println(date3);System.out.println(date4);System.out.println(date5);System.out.println(date6);}}</span>

4.Calendar(抽象类)

Calendar中些陷阱,很容易掉下去:
1、Calendar的星期是从周日开始的,常量值为0。
2、Calendar的月份是从一月开始的,常量值为0。
3、Calendar的每个月的第一天值为1。

package com.ApiApi.www;import java.util.Calendar;public class CalendarDemo {public static void main(String[] args) {Calendar time=Calendar.getInstance();//time.set(2015, 10, 1);//设置时间//time.add(Calendar.YEAR, 3);//时间偏移//time.add(Calendar.MONTH, 3);//时间偏移//time.add(Calendar.DAY_OF_MONTH, 50);//时间偏移Demo(time);DAY_OF_MONTH();}public static void Demo(Calendar time){int year=time.get(Calendar.YEAR);int month=time.get(Calendar.MONTH);int day=time.get(Calendar.DAY_OF_MONTH);int week=time.get(Calendar.DAY_OF_WEEK);System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));}private static String getWeek(int i) {// TODO Auto-generated method stubString[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};return weeks[i];}/** *判断某一年中二月有几天 *输入一年份 set(year,2,1); *进行时间偏移add(Calendar.DAY_OF_MONTH,-1); *打印时间选择get(Calendar.DAY_OF_MONTH); */public static void DAY_OF_MONTH(){Calendar time=Calendar.getInstance();time.set(2000, 2, 1);time.add(Calendar.DAY_OF_MONTH,-1);int days=time.get(Calendar.DAY_OF_MONTH);System.out.println(days);}}

5.GregorianCalendar(Calendar的直接子类)

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。结合Calendar抽象类使用。
import java.util.*; 
import java.text.SimpleDateFormat; 

/** 
* Created by IntelliJ IDEA. 
* User: leizhimin 
* Date: 2007-11-30 
* Time: 15:06:57 
* Calendar的使用测试 
*/
 
public class TestCalendar { 
    public static void main(String args[]) { 
        TestCalendar testCalendar = new TestCalendar(); 
        testCalendar.testCalendar(); 

    } 

    public void testCalendar() { 
        //创建Calendar的方式 
        Calendar now1 = Calendar.getInstance(); 
        Calendar now2 = new GregorianCalendar(); 
        Calendar now3 = new GregorianCalendar(2007, 10, 30); 
        Calendar now4 = new GregorianCalendar(2007, 10, 30, 15, 55);      //陷阱:Calendar的月份是0~11 
        Calendar now5 = new GregorianCalendar(2007, 10, 30, 15, 55, 44); 
        Calendar now6 = new GregorianCalendar(Locale.US); 
        Calendar now7 = new GregorianCalendar(TimeZone.getTimeZone("GMT-8:00")); 

        //通过日期和毫秒数设置Calendar 
        now2.setTime(new Date()); 
        System.out.println(now2); 

        now2.setTimeInMillis(new Date().getTime()); 
        System.out.println(now2); 


        //定义日期的中文输出格式,并输出日期 
        SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E", Locale.CHINA); 
        System.out.println("获取日期中文格式化化输出:" + df.format(now5.getTime())); 
        System.out.println(); 

        System.out.println("--------通过Calendar获取日期中年月日等相关信息--------"); 
        System.out.println("获取年:" + now5.get(Calendar.YEAR)); 
        System.out.println("获取月(月份是从0开始的):" + now5.get(Calendar.MONTH)); 
        System.out.println("获取日:" + now5.get(Calendar.DAY_OF_MONTH)); 
        System.out.println("获取时:" + now5.get(Calendar.HOUR)); 
        System.out.println("获取分:" + now5.get(Calendar.MINUTE)); 
        System.out.println("获取秒:" + now5.get(Calendar.SECOND)); 
        System.out.println("获取上午、下午:" + now5.get(Calendar.AM_PM)); 
        System.out.println("获取星期数值(星期是从周日开始的):" + now5.get(Calendar.DAY_OF_WEEK)); 
        System.out.println(); 

        System.out.println("---------通用星期中文化转换---------"); 
        String dayOfWeek[] = {"", "", "", "", "", "", "", "六"}; 
        System.out.println("now5对象的星期是:" + dayOfWeek[now5.get(Calendar.DAY_OF_WEEK)]); 
        System.out.println(); 

        System.out.println("---------通用月份中文化转换---------"); 
        String months[] = {"一月""二月""三月""四月""五月""六月""七月""八月""九月""十月""十一月""十二月"}; 
        System.out.println("now5对象的月份是: " + months[now5.get(Calendar.MONTH)]); 
    } 
}
---------------------------------------------------------------------
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0] 
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0] 
获取日期中文格式化化输出:2007年11月30日 03时55分44秒 星期五 

--------通过Calendar获取日期中年月日等相关信息-------- 
获取年:2007 
获取月(月份是从0开始的):10 
获取日:30 
获取时:3 
获取分:55 
获取秒:44 
获取上午、下午:1 
获取星期数值(星期是从周日开始的):6 

---------通用星期中文化转换--------- 
now5对象的星期是:五 

---------通用月份中文化转换--------- 
now5对象的月份是: 十一月    


http://www.jb51.net/article/70674.htm更多用法
1 0
原创粉丝点击