Read Sean

          Read me, read Sean.
          posts - 508, comments - 655, trackbacks - 9, articles - 4

          [Jakarta Commons筆記] org.apache.commons.lang.time

          Posted on 2005-08-01 13:19 laogao 閱讀(7368) 評論(11)  編輯  收藏 所屬分類: On Java

           

          好了,來看我在Common Lang中最后要講的一個包:org.apache.commons.lang.time。這個包里面包含了如下5個類:

           

          DateFormatUtils – 提供格式化日期和時間的功能及相關(guān)常量;

          DateUtils – CalendarDate的基礎上提供更方便的訪問;

          DurationFormatUtils – 提供格式化時間跨度的功能及相關(guān)常量;

          FastDateFormat – java.text.SimpleDateFormat提供一個的線程安全的替代類;

          StopWatch – 是一個方便的計時器。

           

          我們還是在一個例子中來看上述各個類的用法吧:

           

          package sean.study.jakarta.commons.lang;

           

          import java.util.Calendar;

          import java.util.Date;

           

          import org.apache.commons.lang.StringUtils;

          import org.apache.commons.lang.time.DateFormatUtils;

          import org.apache.commons.lang.time.DateUtils;

          import org.apache.commons.lang.time.FastDateFormat;

          import org.apache.commons.lang.time.StopWatch;

           

          public class DateTimeUsage {

           

              public static void main(String[] args) {

                  demoDateUtils();

                  demoStopWatch();

              }

             

              public static void demoDateUtils() {

                  System.out.println(StringUtils.center(" demoDateUtils ", 30, "="));

                  Date date = new Date();

                  String isoDateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(date);

                  String isoTime = DateFormatUtils.ISO_TIME_NO_T_FORMAT.format(date);

                  FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM");

                  String customDateTime = fdf.format(date);

                  System.out.println("ISO_DATETIME_FORMAT: " + isoDateTime);

                  System.out.println("ISO_TIME_NO_T_FORMAT: " + isoTime);

                  System.out.println("Custom FastDateFormat: " + customDateTime);

                  System.out.println("Default format: " + date);

                  System.out.println("Round HOUR: " + DateUtils.round(date, Calendar.HOUR));

                  System.out.println("Truncate HOUR: " + DateUtils.truncate(date, Calendar.HOUR));

                  System.out.println();

              }

             

              public static void demoStopWatch() {

                  System.out.println(StringUtils.center(" demoStopWatch ", 30, "="));

                  StopWatch sw = new StopWatch();

                  sw.start();

                  operationA();

                  sw.stop();

                  System.out.println("operationA used " + sw.getTime() + " milliseconds.");

                  System.out.println();

              }

             

              public static void operationA() {

                  try {

                      Thread.sleep(999);

                  }

                  catch (InterruptedException e) {

                      // do nothing

                  }

              }

           

          }

           

          以下是運行結(jié)果:

           

          ======= demoDateUtils ========

          ISO_DATETIME_FORMAT: 2005-08-01T12:41:51

          ISO_TIME_NO_T_FORMAT: 12:41:51

          Custom FastDateFormat: 2005-08

          Default format: Mon Aug 01 12:41:51 CST 2005

          Round HOUR: Mon Aug 01 13:00:00 CST 2005

          Truncate HOUR: Mon Aug 01 12:00:00 CST 2005

           

          ======= demoStopWatch ========

          operationA used 1000 milliseconds.

           

          具體的調(diào)用細節(jié)和完整的API請參閱Commons LangJavadoc

           

           

          Feedback

          # 完啦?  回復  更多評論   

          2005-08-01 13:45 by emu
          你手頭的好東東還真多

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2005-08-01 13:56 by 大胃
          呵呵,其實是我們很多時候根本就沒有留意到這些好東東的存在。

          Jakarta Commons有很多子項目,Common Lang只是其中比較核心的一個。我還在考慮要不要繼續(xù)寫其他子項目:BeanUtils、Collections、Digester、Configuration、HttpClient、Codec、CLI、Logging...... 都是我們?nèi)粘P枰模团聦懖煌昱丁?

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2005-08-02 17:01 by javaer
          支持LZ。不知道這些Common類庫跟JDK5.0重復的有多少呢?

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2005-08-02 17:49 by 大胃
          就我的感覺而言,重復的只是很少一部分。在J2SE 5.0下面,這些庫依然很有用。

          另一方面,現(xiàn)在除非是全新的完全自主開發(fā)的項目,我都不建議將代碼兼容等級提高到1.5.0。

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2006-03-09 15:22 by THEMAX
          不知道有沒有計算日期間隔的?比如說2個日期相差多少個月,相差多少天等.

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2006-03-09 16:57 by 大胃
          參考一下
          org.apache.commons.lang.time.DurationFormatUtils

          其中的formatDurationWords也許對你有用。

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2006-03-13 14:39 by THEMAX
          我想知道的是日期的間隔
          例如:

          d1="2006-03-01" d2="2006-05-01"
          我想得出d2和d1相差幾個月,

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2006-03-13 15:25 by 大胃
          我不打算去翻Javadoc抄出一個例子,(也許有,也許沒有,我更傾向于相信沒有)給你一個自己解決的思路吧:

          兩個日期間隔多少天?
          每個Date都能對應出一個long數(shù)值,即毫秒數(shù),兩個Date的long相減,能夠得到差值,一天有多少毫秒?很容易算出差多少天的。不過你可能還需要看看兩個Date的具體時間,有可能前一個日期中的時間部分比后一個日期中的時間部分要更早或者更晚,上述方法只告訴你相差的時間折合下來有多少天,至于你需要得到的差額是將兩頭的日子包含在內(nèi)還是除開兩頭的日子呢?這就需要你根據(jù)實際需要來決定了。

          兩個日期間隔多少月?
          依次比較年、月、日,我相信不會很難吧。你說呢?

          綜合考慮,我猜Java自己和Jakarta Commons之所以沒有給出一個很直接的方案,是有原因的。類似的算法最好還是自己實現(xiàn),如果用API,我覺得不是很好定義如下問題:比如1月31號和2月1號差幾個月?3月1號和4月30號差幾個月?23:59到第二天的00:01相差要算成1天還是0天,再加上時區(qū)的問題,就更加復雜。一切還需要你首先明確下來需求才行。

          如果你還是困惑,可以去看看java.util.Calendar、java.util.Date和org.apache.commons.lang.time.DateUtils的文檔。也許你可以考慮Calendar里面的roll方法來做出一個效率不算很高的算法?

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2006-03-13 17:24 by THEMAX
          十分感謝!

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2009-10-04 18:48 by hurry
          你真厲害 !!!!
          我要加油 超越你

          # re: [Jakarta Commons筆記] org.apache.commons.lang.time  回復  更多評論   

          2014-06-05 14:55 by 宇飛
          哈哈,什么情況,10年前的文章,今天來讀一讀
          主站蜘蛛池模板: 巢湖市| 无锡市| 余干县| 湘潭市| 浙江省| 襄垣县| 庆云县| 吴旗县| 额尔古纳市| 富民县| 佛学| 容城县| 方山县| 海兴县| 乌海市| 武威市| 涟源市| 莒南县| 淅川县| 宝应县| 宽甸| 内黄县| 莆田市| 湟源县| 祁阳县| 焉耆| 商丘市| 民和| 廉江市| 花莲县| 诸城市| 梁河县| 丰宁| 晋城| 扬州市| 含山县| 灌阳县| 宝兴县| 蓬溪县| 遂宁市| 始兴县|