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

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

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

    邊城愚人

    如果我不在邊城,我一定是在前往邊城的路上。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      31 隨筆 :: 0 文章 :: 96 評論 :: 0 Trackbacks
    ?? ?? ? 對于沒有使用過Calendar的程序員來說,再次處理日期時不妨使用Calendar而不僅僅是Date和SimpleDateFormat等類。這篇文章根據幾個使用日期的場景來說明如何使用Calendar等類。
    ?? ?? ? 在數據庫編程時,我們通常將java日期字段選作Date型的(一般是java.sql.Date,繼承于java.util.Date,使用方法是類似的),當然也可以存儲為字符串甚至是long型的time,但我們這里只討論date型的。如果存儲的時間是系統當前時間,我們可以使用Date d = new Date();就得到想要的時間;以前我編程時也指定存儲日期的格式,但現在想來不是很有必要,完全可以在讀出數據時指定格式。另一種可選的方法是使用Calendar類,方法如下:

    ????public?Date?now(){
    ????????Calendar?c?
    =?Calendar.getInstance();
    ????????
    return?c.getTime();
    ????}

    ?? ?
    ?? ???? 如果要顯示數據庫中的日期,比如要在web頁面上顯示出諸如下面的日期字符串:“2007-06-21,21:18:03”,而輸入的參數即為對應于數據庫的date型日期,方法如下:

    ????public?String?time(Date?date){
    ????????SimpleDateFormat?sdf?
    =?new?SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
    ??????String?s?
    =?sdf.format(date);
    ????????
    return?s;
    ????}

    但這里并沒有Calendar的事情,原因很簡單, Calendar并不能指定日期的格式,我們當然可以通過拼串的形式得到想要的字符串,相比來說,SimpleDateFormat的使用更合適些。
    ?? ?? ? 好了,下面要說一個能顯示出Calendar用武之地的例子。假如一個web表單中有個出生年月日的選項,該選項使用下拉框的方式選擇,即選項中有三個分別對應于年月日的下拉框,下拉框的內容是靜態的,比如年是“1930-2007”的option,月份是“1-12”的option,日是“1-31”的option。我們要寫一個方法,參數為從下拉框中得到的三個字符串參數,返回結果為Date型日期以便存入數據庫中。下面是使用Calendar類的實現方法:

    ????public?Date?getTime(String?year,String?month,String?day){
    ????????Calendar?c?
    =?Calendar.getInstance();
    ????????c
    .setLenient(false);
    ????????try{
    ????????????c
    .set(Calendar.YEAR,?Integer.parseInt(year));
    ????????????c
    .set(Calendar.MONTH,?(Integer.parseInt(month)-1));
    ????????????c
    .set(Calendar.DATE,?Integer.parseInt(day));
    ????????????Date?d?
    =?c.getTime();
    ????????????
    return?d;
    ????????}catch(Exception?e){
    ????????????????
    //????????????
    ????????}
    ????????
    return?null;
    ????}

    ??? ??? 由于不能確定輸入參數是否為有效的數字,需要異常處理,這里只是簡單的返回 null。需要指出的是, Calendar中的月份是從“0”開始以“11”結束的,使用時要格外注意一下。 我們知道,每個月的天數是不一樣的,如果我們的month輸入的是“1”(就是二月),而day輸入的是“31”,Calendar(也包括Date類) 默認的會將日期下延到下一個月而不報錯;如果我們不希望這樣處理,可以通過c.setLenient(false);使得嚴格要求日期有效,這樣上面的情況下函數就會拋出異常。
    ? ?? ?? Calendar還有一個應用情況。假定我們從數據庫中得到date,希望能從date中得到具體的時間信息;可以使用date如下的相應方法:
    Screenshot-1.png

    但就像你所看到的,java doc上很明白地depricated這些方法??蛇x擇的方法是使用Calendar類。例子如下:?? ?
    ????public?void?getDetailsOfTime(Date?date){
    ????????Calendar?c?
    =?Calendar.getInstance();
    ????????c.setTime(date);
    ????????
    int?y?=?c.get(Calendar.YEAR);
    ????????
    int?m?=?c.get(Calendar.MONTH);
    ????????
    int?d?=?c.get(Calendar.DATE);
    ????????
    int?h?=?c.get(Calendar.HOUR);
    ????????
    int?mi?=?c.get(Calendar.MINUTE);
    ????????
    int?s?=?c.get(Calendar.SECOND);
    ????????System.out.printf(
    "year=%d,month=%d,date=%d,hour=%d,mimute=%d,second=%d",y,m,d,h,mi,s);
    ????}


    ??? ??? 如上便是我基本的使用 Calendar類的情況,如果有不正確的地方歡迎指正。關于 Calendar的更詳細的使用方法,可以參考java doc。
    posted on 2007-06-22 08:40 kafka0102 閱讀(4078) 評論(0)  編輯  收藏 所屬分類: J2SE

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲 综合 国产 欧洲 丝袜| 免费国产成人高清在线观看麻豆| 国产亚洲精品a在线无码| 黄页网址在线免费观看| 国产乱子伦片免费观看中字| 亚洲成av人片在线天堂无| 免费看少妇作爱视频| 亚洲精品V天堂中文字幕| 午夜两性色视频免费网站| 久久亚洲欧美国产精品| 夜色阁亚洲一区二区三区| 一日本道a高清免费播放| 自拍偷自拍亚洲精品被多人伦好爽| 中文永久免费观看网站| 亚洲AV无码久久精品蜜桃| 日韩人妻无码精品久久免费一| 亚洲成a人片在线网站| 最近免费中文字幕大全视频 | 亚洲国产综合精品中文第一区| 免费视频一区二区| 亚洲日韩中文字幕| 在线A级毛片无码免费真人| 另类小说亚洲色图| 亚洲精品成人无限看| h视频在线观看免费网站| 亚洲va中文字幕| 国内精品久久久久久久亚洲| 国产激情免费视频在线观看| 亚洲综合成人婷婷五月网址| 亚洲精品专区在线观看| 9277手机在线视频观看免费| 亚洲av成人中文无码专区| 亚洲人成人一区二区三区| 美女被免费喷白浆视频| 人妻巨大乳hd免费看| 亚洲婷婷综合色高清在线| 亚洲阿v天堂在线2017免费| 99精品视频免费观看| 手机永久免费的AV在线电影网| 亚洲va在线va天堂va不卡下载| 成人免费无码大片a毛片软件|