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

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

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

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

    #

    使用Java中的Date和Calendar類Java 語言的Calendar(日歷),Date(日期), 和DateFormat(日期格式)組成了Java標準的一個基本但是非常重要的部分. 日期是商業(yè)邏輯計算一個關(guān)鍵的部分. 所有的開發(fā)者都應(yīng)該能夠計算未來的日期, 定制日期的顯示格式, 并將文本數(shù)據(jù)解析成日期對象. 我們寫了兩篇文章, 這是第一篇, 我們將大概的學(xué)習(xí)日期, 日期格式, 日期的解析和日期的計算.


    我們將討論下面的類:

    1、具體類(和抽象類相對)java.util.Date
    2、抽象類java.text.DateFormat 和它的一個具體子類,java.text.SimpleDateFormat
    3、抽象類java.util.Calendar 和它的一個具體子類,java.util.GregorianCalendar

    具體類可以被實例化, 但是抽象類卻不能. 你首先必須實現(xiàn)抽象類的一個具體子類.

    Date 類從Java 開發(fā)包(JDK) 1.0 就開始進化, 當時它只包含了幾個取得或者設(shè)置一個日期數(shù)據(jù)的各個部分的方法, 比如說月, 日, 和年. 這些方法現(xiàn)在遭到了批評并且已經(jīng)被轉(zhuǎn)移到了Calendar類里去了, 我們將在本文中進一步討論它. 這種改進旨在更好的處理日期數(shù)據(jù)的國際化格式. 就象在JDK 1.1中一樣, Date 類實際上只是一個包裹類, 它包含的是一個長整型數(shù)據(jù), 表示的是從GMT(格林尼治標準時間)1970年, 1 月 1日00:00:00這一刻之前或者是之后經(jīng)歷的毫秒數(shù).


    一、創(chuàng)建一個日期對象\r

    讓我們看一個使用系統(tǒng)的當前日期和時間創(chuàng)建一個日期對象并返回一個長整數(shù)的簡單例子. 這個時間通常被稱為Java 虛擬機(JVM)主機環(huán)境的系統(tǒng)時間.
    import java.util.Date;

    public class DateExample1 {
    ??? public static void main(String[] args) {
    ??? // Get the system date/time
    ??? Date date = new Date();

    ??? System.out.println(date.getTime());
    ??? }
    }

    在星期六, 2001年9月29日, 下午大約是6:50的樣子, 上面的例子在系統(tǒng)輸出設(shè)備上顯示的結(jié)果是 1001803809710. 在這個例子中,值得注意的是我們使用了Date 構(gòu)造函數(shù)創(chuàng)建一個日期對象, 這個構(gòu)造函數(shù)沒有接受任何參數(shù). 而這個構(gòu)造函數(shù)在內(nèi)部使用了System.currentTimeMillis() 方法來從系統(tǒng)獲取日期.

    那么, 現(xiàn)在我們已經(jīng)知道了如何獲取從1970年1月1日開始經(jīng)歷的毫秒數(shù)了. 我們?nèi)绾尾拍芤砸环N用戶明白的格式來顯示這個日期呢? 在這里類java.text.SimpleDateFormat 和它的抽象基類 java.text.DateFormat 就派得上用場了.


    二、日期數(shù)據(jù)的定制格式

    假如我們希望定制日期數(shù)據(jù)的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成這個工作:

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

    public class DateExample2 {

    ??? public static void main(String[] args) {

    ??????? SimpleDateFormat bartDateFormat =
    ??????? new SimpleDateFormat("EEEE-MMMM-dd-yyyy");

    ??????? Date date = new Date();

    ??????? System.out.println(bartDateFormat.format(date));
    ??? }
    }

    只要通過向SimpleDateFormat 的構(gòu)造函數(shù)傳遞格式字符串"EEE-MMMM-dd-yyyy", 我們就能夠指明自己想要的格式. 你應(yīng)該可以看見, 格式字符串中的ASCII 字符告訴格式化函數(shù)下面顯示日期數(shù)據(jù)的哪一個部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的個數(shù)決定了日期是如何格式化的.傳遞"EE-MM-dd-yy"會顯示 Sat-09-29-01. 請察看Sun 公司的Web 站點獲取日期格式化選項的完整的指示.


    三、將文本數(shù)據(jù)解析成日期對象\r

    假設(shè)我們有一個文本字符串包含了一個格式化了的日期對象, 而我們希望解析這個字符串并從文本日期數(shù)據(jù)創(chuàng)建一個日期對象. 我們將再次以格式化字符串"MM-dd-yyyy" 調(diào)用SimpleDateFormat類, 但是這一次, 我們使用格式化解析而不是生成一個文本日期數(shù)據(jù). 我們的例子, 顯示在下面, 將解析文本字符串"9-29-2001"并創(chuàng)建一個值為001736000000 的日期對象.

    例子程序:

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

    public class DateExample3 {

    ??? public static void main(String[] args) {
    ??????? // Create a date formatter that can parse dates of
    ??????? // the form MM-dd-yyyy.
    ??????? SimpleDateFormat bartDateFormat =
    ??????? new SimpleDateFormat("MM-dd-yyyy");

    ??????? // Create a string containing a text date to be parsed.
    ??????? String dateStringToParse = "9-29-2001";

    ??????? try {
    ??????????? // Parse the text version of the date.
    ??????????? // We have to perform the parse method in a
    ??????????? // try-catch construct in case dateStringToParse
    ??????????? // does not contain a date in the format we are expecting.
    ??????????? Date date = bartDateFormat.parse(dateStringToParse);

    ??????????? // Now send the parsed date as a long value
    ??????????? // to the system output.
    ??????????? System.out.println(date.getTime());
    ??????? }
    ??????? catch (Exception ex) {
    ??????????? System.out.println(ex.getMessage());
    ??????? }
    ??? }
    }


    五、使用標準的日期格式化過程

    既然我們已經(jīng)可以生成和解析定制的日期格式了, 讓我們來看一看如何使用內(nèi)建的格式化過程. 方法 DateFormat.getDateTimeInstance() 讓我們得以用幾種不同的方法獲得標準的日期格式化過程. 在下面的例子中, 我們獲取了四個內(nèi)建的日期格式化過程. 它們包括一個短的, 中等的, 長的, 和完整的日期格式.

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

    public class DateExample4 {

    ??? public static void main(String[] args) {
    ??????? Date date = new Date();

    ??????? DateFormat shortDateFormat =
    ??????? DateFormat.getDateTimeInstance(
    ??????? DateFormat.SHORT,
    ??????? DateFormat.SHORT);

    ??????? DateFormat mediumDateFormat =
    ??????? DateFormat.getDateTimeInstance(
    ??????? DateFormat.MEDIUM,
    ??????? DateFormat.MEDIUM);

    ??????? DateFormat longDateFormat =
    ??????? DateFormat.getDateTimeInstance(
    ??????? DateFormat.LONG,
    ??????? DateFormat.LONG);

    ??????? DateFormat fullDateFormat =
    ??????? DateFormat.getDateTimeInstance(
    ??????? DateFormat.FULL,
    ??????? DateFormat.FULL);

    ??????? System.out.println(shortDateFormat.format(date));
    ??????? System.out.println(mediumDateFormat.format(date));
    ??????? System.out.println(longDateFormat.format(date));
    ??????? System.out.println(fullDateFormat.format(date));
    ??? }
    }

    注意我們在對 getDateTimeInstance的每次調(diào)用中都傳遞了兩個值. 第一個參數(shù)是日期風(fēng)格, 而第二個參數(shù)是時間風(fēng)格. 它們都是基本數(shù)據(jù)類型int(整型). 考慮到可讀性, 我們使用了DateFormat 類提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道獲取時間和日期格式化過程的更多的方法和選項, 請看Sun 公司W(wǎng)eb 站點上的解釋.

    運行我們的例子程序的時候, 它將向標準輸出設(shè)備輸出下面的內(nèi)容:
    9/29/01 8:44 PM
    Sep 29, 2001 8:44:45 PM
    September 29, 2001 8:44:45 PM EDT
    Saturday, September 29, 2001 8:44:45 PM EDT


    六、Calendar 類\r

    我們現(xiàn)在已經(jīng)能夠格式化并創(chuàng)建一個日期對象了, 但是我們?nèi)绾尾拍茉O(shè)置和獲取日期數(shù)據(jù)的特定部分呢, 比如說小時, 日, 或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類. 就如我們前面提到的那樣, Calendar 類中的方法替代了Date 類中被人唾罵的方法.

    假設(shè)你想要設(shè)置, 獲取, 和操縱一個日期對象的各個部分, 比方一個月的一天或者是一個星期的一天. 為了演示這個過程, 我們將使用具體的子類 java.util.GregorianCalendar. 考慮下面的例子, 它計算得到下面的第十個星期五是13號.

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

    public class DateExample5 {

    ??? public static void main(String[] args) {
    ??????? DateFormat dateFormat =
    ??????? DateFormat.getDateInstance(DateFormat.FULL);

    ??????? // Create our Gregorian Calendar.
    ??????? GregorianCalendar cal = new GregorianCalendar();

    ??????? // Set the date and time of our calendar
    ??????? // to the system's date and time
    ??????? cal.setTime(new Date());

    ??????? System.out.println("System Date: " +
    ??????? dateFormat.format(cal.getTime()));

    ??????? // Set the day of week to FRIDAY
    ??????? cal.set(GregorianCalendar.DAY_OF_WEEK,
    ??????? GregorianCalendar.FRIDAY);
    ??????? System.out.println("After Setting Day of Week to Friday: " +
    ??????? dateFormat.format(cal.getTime()));

    ??????? int friday13Counter = 0;
    ??????? while (friday13Counter <= 10) {

    ??????????? // Go to the next Friday by adding 7 days.
    ??????????? cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

    ??????????? // If the day of month is 13 we have
    ??????????? // another Friday the 13th.
    ??????????? if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) {
    ??????????????? friday13Counter++;
    ??????????????? System.out.println(dateFormat.format(cal.getTime()));
    ??????????? }
    ??????? }
    ??? }
    }

    在這個例子中我們作了有趣的函數(shù)調(diào)用:
    cal.set(GregorianCalendar.DAY_OF_WEEK,
    GregorianCalendar.FRIDAY);

    和:
    cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

    set 方法能夠讓我們通過簡單的設(shè)置星期中的哪一天這個域來將我們的時間調(diào)整為星期五. 注意到這里我們使用了常量 DAY_OF_WEEK 和 FRIDAY來增強代碼的可讀性. add 方法讓我們能夠在日期上加上數(shù)值. 潤年的所有復(fù)雜的計算都由這個方法自動處理.

    我們這個例子的輸出結(jié)果是:
    System Date: Saturday, September 29, 2001
    當我們將它設(shè)置成星期五以后就成了: Friday, September 28, 2001
    Friday, September 13, 2002
    Friday, December 13, 2002
    Friday, June 13, 2003
    Friday, February 13, 2004
    Friday, August 13, 2004
    Friday, May 13, 2005
    Friday, January 13, 2006
    Friday, October 13, 2006
    Friday, April 13, 2007
    Friday, July 13, 2007
    Friday, June 13, 2008


    七、時間掌握在你的手里\r

    有了這些Date 和Calendar 類的例子, 你應(yīng)該能夠使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 創(chuàng)建許多方法了.

    posted @ 2006-07-13 13:47 brock 閱讀(221) | 評論 (0)編輯 收藏

     第一頁1.htm
    <script>
     function OpenWin(form)
    {
       //showModelessDialog
       var  str = window.showModalDialog('2.htm',form,
             'dialogWidth:300px; dialogHeight:201px; center:yes');
       if(str != null)
       document.forms[0].textb.vaule = str;
       }
    </script>
    <form name="form1" method="post" action="" onsubmit="return false" >
    <input type="text"  name="textb" />
    <input type = "submit" name = "submit" value = "打開新窗口" onclick= "OpenWin(this.form);" />

    </form>
    第二頁2.htm
    <title>Dialog</title>
    <script>
    function back()
    {
     window.dialogArguments.textb.value=document.form1.text1.value;
     self.close();
    }
    </script>
    <body>
    <form name="form1" method="post" action="#" onSubmit="back()" >
    <input type="text"  name="text1" />
    <input type = "submit" name = "submit" value = "返回" />
    </form>
    </body>

    1212.gif
    note :在第二頁要注意一點就是 當提交的時會打一個新的窗體,把action 設(shè)為“#”,就不會這個情況。

    posted @ 2005-11-25 10:21 brock 閱讀(890) | 評論 (0)編輯 收藏

    對象的創(chuàng)建有兩種方法:一個是復(fù)雜形的,另一個是緊湊形的。復(fù)雜形的心須定義一個構(gòu)造函數(shù),緊湊形的使用特殊的符號":"來指示對象的構(gòu)造。

    復(fù)雜形的比如:
    function hong(name ,age)
    {
     this.name  =  name;
     this.age   =  age ;
    }
    創(chuàng)建二個實例 
    var emp1 =  new hong ("a", 23);
    var emp2 =  new hong ("b", 24);

    緊湊形比如:

    var emp1 = {name : "a",age:23};
    var emp2 =  {name : "b",age:24};

    緊湊形的在創(chuàng)建實例時就給對象的屬性賦值了。。哈哈,我是這樣理解的。

    調(diào)用方法:
    alert (emp1.name + emp2.age);  
     
    兩種方法顯示一樣。。

    posted @ 2005-11-18 15:56 brock 閱讀(198) | 評論 (0)編輯 收藏

    prototype 屬性

    返回對象類型原型的引用。

    objectName.prototype

    objectName 參數(shù)是對象的名稱。

    說明

    prototype 屬性提供對象的類的一組基本功能。 對象的新實例“繼承”賦予該對象原型的操作。


    <script>
    function Car(sLame)
    {
     this.name = sLame ; 
    }
    Car.prototype.fname = function()
    {
     alert("brock"+this.name);
    }
    var x = new Car("hong");
    var y = x.fname();
    </script>

    posted @ 2005-11-17 15:23 brock 閱讀(494) | 評論 (0)編輯 收藏

    //摘自http://bbs.51js.com

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Base( v_sBaseName )
    {
     this.BaseName = v_sBaseName
     this.BaseMethod = BaseMethod;
     function BaseMethod( v_sStr )
     {
      alert("BaseName: " + this.BaseName + "\n" + "ExtendStr: " + v_sStr);
     }
    }

    function Son( v_sName )
    {
     this.Name = v_sName
     this.BaseName = this.Name;
     this.Method = Method;
     function Method( v_sStr )
     {
      alert("Name: " + this.Name + "\n" + "ExtendStr: " + v_sStr);
     }
    }

    Son.prototype = new Base();

    var O = new Son("初始化字串")

    O.Method("Method附加字串");
    O.BaseMethod("BaseMethod附加字串");
    //-->
    </SCRIPT>



    SCRIPT LANGUAGE="JavaScript">
    <!--
    function Base( v_sBaseName )
    {
     this.BaseName = v_sBaseName
     this.BaseMethod = BaseMethod;
     function BaseMethod( v_sStr )
     {
      alert("BaseName: " + this.BaseName + "\n" + "ExtendStr: " + v_sStr);
     }
    }

    function Son( v_sName )
    {
     Base.call(this, v_sName)
     this.Name = v_sName
     this.Method = Method;
     function Method( v_sStr )
     {
      alert("Name: " + this.Name + "\n" + "ExtendStr: " + v_sStr);
     }
    }

    var O = new Son("初始化字串")

    O.Method("Method附加字串");
    O.BaseMethod("BaseMethod附加字串");
    //-->
    </SCRIPT>



    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Base( v_sBaseName )
    {
            this.BaseName = v_sBaseName
            this.BaseMethod = BaseMethod;
            function BaseMethod( v_sStr )
            {
                    alert("BaseName: " + this.BaseName + "\n" + "ExtendStr: " + v_sStr);
            }
    }

    function Son( v_sName )
    {
            Base.call(this, v_sName)
            this.base = new Base(v_sName)   //建立一個基對象實例以便重載後可以調(diào)用基對象的函數(shù)
            this.Name = v_sName
            this.Method = Method;
            function Method( v_sStr )
            {
                    alert("Name: " + this.Name + "\n" + "ExtendStr: " + v_sStr);
            }
            this.BaseMethod = BaseMethod;
            function BaseMethod( v_sStr )
            {
                    alert("Override BaseName: " + this.BaseName + "\n" + "Override ExtendStr: " + v_sStr);
            }
    }

    var O = new Son("初始化字串")

    O.Method("Method附加字串");
    O.BaseMethod("重載後的BaseMethod附加字串");
    O.base.BaseMethod("BaseMethod附加字串");
    //-->
    </SCRIPT>




    <script>
    String.prototype.defaultText="這是String對象的默認值,也是一個靜態(tài)屬性";

    var sss=new String();

    alert(sss.defaultText);//任何字符傳都有這個屬性了


    alert("所有的字符串都會有defaultText這個默認值屬性:"+"所有的字符串都會有defaultText這個默認值屬性".defaultText)

    function b()
    {
    alert(String.prototype.defaultText);
    b1.style.display="block";
    }

    function a()
    {
    delete String.prototype.defaultText;

    }

     

    </script>
    <button onclick="b()">顯示String對象的defaultText屬性</button>
    <button id=b1 style="display:none" onclick="a()">刪掉String對象的defaultText屬性</button>

    posted @ 2005-11-16 17:23 brock 閱讀(242) | 評論 (0)編輯 收藏

    僅列出標題
    共15頁: First 上一頁 7 8 9 10 11 12 13 14 15 
    主站蜘蛛池模板: 亚洲国产美女视频| 亚洲精品高清视频| 亚洲av无码一区二区三区在线播放 | 亚洲国产91在线| 麻豆视频免费播放| 亚洲中文无码av永久| 国产精品永久免费10000| 亚洲国产精品久久人人爱| 国产日本一线在线观看免费| 亚洲人6666成人观看| 成年人免费网站在线观看| 国产亚洲视频在线观看网址| 亚洲 自拍 另类小说综合图区| 一级中文字幕乱码免费| 亚洲午夜久久久久久久久久| 无码日韩精品一区二区三区免费| 337p日本欧洲亚洲大胆艺术| 91视频国产免费| 无忧传媒视频免费观看入口| 国产亚洲精品无码拍拍拍色欲| 91免费福利视频| 亚洲国产精品xo在线观看| 妞干网在线免费视频| 一个人看的免费观看日本视频www| 亚洲成a人片在线观看无码| jjizz全部免费看片| 亚洲国产av玩弄放荡人妇| 亚洲片一区二区三区| 午夜不卡久久精品无码免费| 亚洲人成7777| 成人午夜亚洲精品无码网站| 最近中文字幕电影大全免费版| 亚洲人AV在线无码影院观看| 国产亚洲色视频在线| 16女性下面扒开无遮挡免费| 国产成人 亚洲欧洲| 亚洲最新视频在线观看| 国产乱子影视频上线免费观看| 黄页免费在线观看| 亚洲精品无码久久久久A片苍井空| 国产亚洲成av人片在线观看|