<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    千里冰封
    JAVA 濃香四溢
    posts - 151,comments - 2801,trackbacks - 0

    java中的時間操作不外乎這四種情況:

    1、獲取當前時間

    2、獲取某個時間的某種格式

    3、設(shè)置時間

    4、時間的運算

    好,下面就針對這四種情況,一個一個搞定。

     

    一、獲取當前時間

     

    有兩種方式可以獲得,第一種,使用Date類。

    j2SE的包里有兩個Date類,一個是java.sql.Date,一個是java.util.Date

    這里,要使用java.util.Date。獲取當前時間的代碼如下

    Date date = new Date();

    date.getTime();

    還有一種方式,使用System.currentTimeMillis();

     

    這兩種方式獲得的結(jié)果是一樣的,都是得到一個當前的時間的long型的時間的毫秒值,這個值實際上是當前時間值與1970年一月一號零時零分零秒相差的毫秒數(shù)。

    當前的時間得到了,但實際的應(yīng)用中最后往往不是要用這個long型的東西,用戶希望得到的往往是一個時間的字符串,比如“2006618號”,或“2006-06-18”,老外可能希望得到的是“06-18-2006”,諸如此類等等。這就是下一個要解決的問題

     

    二、獲取某個時間的某種格式

     

    獲取時間的格式,需要用到一個專門用于時間格式的類java.text.SimpleDateFormat

    首先,定義一個SimpleDateFormat變量

    SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);

    這個構(gòu)造函數(shù)的定義如下:

    SimpleDateFormat(String pattern, Locale locale)

    第一個參數(shù)pattern,我們后面再解釋,這里我們使用一個"",第二個參數(shù),是用來設(shè)置時區(qū)的,這里用到了java.util.Locale這個類,這個類了面定義了很多靜態(tài)變量,直接拿過來用就OK,我們把時區(qū)設(shè)置為Locale.SIMPLIFIED_CHINESE,只看名字,這個靜態(tài)變量的意義已經(jīng)很清楚了。

     

    接下來我們使用這個SimpleDateFormat把當前時間格式化為一個如下格式的時間字符串“XXXXXXXX_XXXXXX秒”,代碼:

    sdf.applyPattern("yyyy年MM月dd日_HH時mm分ss秒");

    String timeStr = sdf.format(new Date());

     

    獲取時間格式的函數(shù)是format,這個函數(shù)的參數(shù)是java.util.Date對象,這個沒有什么花頭。

    要說明一下的是這個pattern,所謂的模式。這里,yyyy,MM,dd等,這就是模式。

    我們可以在SimpleDateFormat的構(gòu)造函數(shù)中指定模式,比如

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE);

    也可以獲取時間格式的時候使用applyPattern函數(shù)臨時指定,上面的例子就是這樣。

    什么字符代表什么,這是j2se約定好的,設(shè)置模式的時候,我們可以使用約定好的字符加上任何我們想要的字符串。

    j2se對字符所代表的模式的約定列表如下:

     

     

    Letter Date or Time Component Presentation
    G Era designator Text
    y Year Year
    M Month in year Month
    w Week in year Number
    W Week in month Number
    D Day in year Number
    d Day in month Number
    F Day of week in month Number
    E Day in week Text
    a Am/pm marker Text 
    H Hour in day (0-23) Number
    k Hour in day (1-24) Number
    K Hour in am/pm (0-11)  Number
    h   Hour in am/pm (1-12)  Number
    m   Minute in hour  Number
    s   Second in minute  Number
    S   Millisecond  Number  
    z   Time zone   General time zone 
    Z   Time zone  RFC 822 time zone 

    三,設(shè)置時間

    現(xiàn)在設(shè)置時間,推薦 使用java.util.Calendar類來進行操作,因為java.util.Date類很多方法都過時了,
    Calendar 類有很多重載的設(shè)置時間的方法
    我們可以針對于某一項進行設(shè)置,也可以同時進行很多設(shè)置
    void set(int field, int value)
              將給定的日歷字段設(shè)置為給定值。
     void set(int year, int month, int date)
              設(shè)置日歷字段 YEARMONTHDAY_OF_MONTH 的值。
     void set(int year, int month, int date, int hourOfDay, int minute)
              設(shè)置日歷字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。
     void set(int year, int month, int date, int hourOfDay, int minute, int second)
              設(shè)置字段 YEARMONTHDAY_OF_MONTHHOURMINUTESECOND 的值。
    其中第一個就是給特定的字段設(shè)值,后面三個就是針對多個字段賦值

    四,時間運算

    時間的運算,無外乎就是加加減減,然后比較誰早誰晚而已,這些需求JAVA的API已經(jīng)幫我們實現(xiàn)的很好了。一般比較時間的可以用如下的方法
    abstract  void add(int field, int amount)
              根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時間量。
     boolean after(Object when)
              判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之后,返回判斷結(jié)果。
     boolean before(Object when)
              判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結(jié)果。

    第一個是給某個字段加上某個數(shù)量的時間,雖然這個方法名叫add ,我們要減也是調(diào)用它的,只不過我們傳入的是負數(shù)。

    其實JAVA對時間操作的支持還是挺豐富的。希望大家的日常的使用中有更多的發(fā)現(xiàn)。



    盡管千里冰封
    依然擁有晴空

    你我共同品味JAVA的濃香.
    posted on 2007-09-11 23:56 千里冰封 閱讀(39713) 評論(14)  編輯  收藏 所屬分類: JAVASE

    FeedBack:
    # re: JAVA中的時間操作
    2007-09-12 08:00 | 久城
    關(guān)于時間的運算,用Calendar或者其子類GregorianCalendar也許更好一些。  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-12 08:38 | 楊愛友
    獲取、設(shè)置時間用Date類,關(guān)于對時間的比較、計算用GregorianCaleader及其子類更方便。  回復(fù)  更多評論
      
    # re: JAVA中的時間操作[未登錄]
    2007-09-12 09:24 | david
    頂一個  回復(fù)  更多評論
      
    # re: JAVA中的時間操作[未登錄]
    2007-09-12 09:55 | Samuel
    對時間沒有進行徹底的研究,這只是入門而已!  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-12 11:54 | 編程、設(shè)計是職業(yè)更是愛好
    在實際項目中,時區(qū)會帶來很多問題  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-12 15:07 | 黑盒子
    很好很好。。一直都在用不同的方法寫時間,沒次都是找來找去,找到一個能用的。但是沒有一次自己總結(jié)一下,雖然上面的東西都用過,但是用的時候,還是要去找。。這個東西非常號!! 謝謝~~  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-12 19:39 | 千里冰封
    @黑盒子
    謝謝
    有空常來坐坐:)  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-13 09:56 | Matthew Chen
    聽說java中時間的操作有一些不是很精確,不清楚具體指哪一塊,樓主有沒有研究呢,感覺用calander會好點.  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-13 09:57 | 死循環(huán)
    恩,在實際開發(fā)中還是用GregorianCalendar和Calendar....
    不過也時受教了...  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2007-09-13 09:59 | 千里冰封
    @Matthew Chen
    現(xiàn)在對時間的操作JAVA都是推薦使用Calendar的,Date大部份方法都過時了,并且Calendar可以處理更多的情況  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2008-12-30 13:19 | 北京時間
    實際開發(fā)中還是用GregorianCalendar和Calendar  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2012-06-18 15:19 | ralph
    謝謝,  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2012-09-03 18:37 | Strive443
    好文,好畫,好博客  回復(fù)  更多評論
      
    # re: JAVA中的時間操作
    2012-10-26 15:35 | gloot
    java 的時間真蛋疼,

    設(shè)計得真他媽的垃圾  回復(fù)  更多評論
      
    主站蜘蛛池模板: 色www永久免费| 污视频网站在线观看免费| 久久aa毛片免费播放嗯啊| 亚洲国产精品嫩草影院在线观看 | 亚洲第一男人天堂| 大学生美女毛片免费视频| 亚洲香蕉久久一区二区| 毛片免费视频播放| 在线观看亚洲AV日韩AV| 日韩在线免费看网站| 无忧传媒视频免费观看入口| 免费人妻av无码专区| 国产精品无码免费专区午夜| 亚洲色偷拍另类无码专区| 日韩电影免费观看| 亚洲精品中文字幕乱码影院| 无码中文字幕av免费放| 亚洲国产精品成人综合色在线| 国产18禁黄网站免费观看| 国产人成网在线播放VA免费| 亚洲a一级免费视频| 黄页网站免费观看| 污视频网站在线观看免费| 亚洲国产成人片在线观看无码| 先锋影音资源片午夜在线观看视频免费播放| 亚洲欧洲日韩国产综合在线二区| 1000部拍拍拍18免费网站| 亚洲国产高清国产拍精品| 久久亚洲高清综合| 69免费视频大片| 国产成人va亚洲电影| 亚洲成AV人片在线观看无码| 免费福利在线播放| 美女露隐私全部免费直播| 亚洲国产老鸭窝一区二区三区| 成人免费视频77777| 国产黄在线观看免费观看不卡| 在线电影你懂的亚洲| 国产精品无码一二区免费 | 狠狠久久永久免费观看| 国产免费网站看v片在线|