csusky

          常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          org.apache.lucene.document.DateField

          該類提供了日期和字符串之間的相互轉(zhuǎn)化,實(shí)際上是 long型和String型的相互轉(zhuǎn)化,轉(zhuǎn)化時(shí)用到了一個(gè)不常用的
          Long.toString(long,int);方法。是按指定的方式對(duì)long型進(jìn)行轉(zhuǎn)化
          第一個(gè)參數(shù)是要轉(zhuǎn)化的long,第二個(gè)參數(shù)是轉(zhuǎn)化時(shí)候的基數(shù),如果基數(shù)是10就相當(dāng)于方法Long.toString(long);
          這里使用的參數(shù)是最大值,即36== 10個(gè)數(shù)字+26個(gè)英文字母。這樣轉(zhuǎn)化出來的字符串長(zhǎng)度比較短,占用比較少的空間,
          另外,在轉(zhuǎn)化時(shí),統(tǒng)一了轉(zhuǎn)化后的字符串長(zhǎng)度,如果不足9位(日期的long轉(zhuǎn)化后最高為9位,1970之后的日期可正確轉(zhuǎn)換),
          統(tǒng)一長(zhǎng)度后的字符串可以通過比較字符串來比較日期的大小。


          日期轉(zhuǎn)化成的字符串類似于
          0fev8eza3
          本來應(yīng)該是fev8eza3 采取了不足9位補(bǔ)0的方法。

            private static int DATE_LEN = Long.toString(1000L*365*24*60*60*1000,
                      Character.MAX_RADIX).length();
          計(jì)算出從1970年開始后1000年的時(shí)間轉(zhuǎn)化為字符串后的長(zhǎng)度,所有轉(zhuǎn)化后的時(shí)間都不應(yīng)超過這個(gè)長(zhǎng)度,如果不足則在前面補(bǔ)0

          可以通過字符串轉(zhuǎn)化為日期的函數(shù)計(jì)算出能表示的最大日期為
          stringToTime("zzzzzzzzz");
          打印出來是 Fri Apr 22 19:04:28 CST 5188  
          所以該函數(shù)能轉(zhuǎn)化的日期范圍為 1970-1-1~~5188-4-22


          日期轉(zhuǎn)化為字符串
          public static String timeToString(long time)

          字符串轉(zhuǎn)化為日期
          public static long stringToTime(String s)


          實(shí)際上 函數(shù) LongToString(long i,int radix) 相當(dāng)于  先將i轉(zhuǎn)化為radix進(jìn)制的整數(shù),然后再用函數(shù)
          LongToString(i)轉(zhuǎn)化為字符串。所以radix的值應(yīng)該在2--36之間如果不是 則按照10進(jìn)制計(jì)算。

          posted on 2008-04-10 19:26 曉宇 閱讀(344) 評(píng)論(0)  編輯  收藏 所屬分類: LUCENE

          主站蜘蛛池模板: 长武县| 和林格尔县| 磐安县| 辉县市| 哈密市| 东丽区| 阳泉市| 乌拉特后旗| 合作市| 浮山县| 祁门县| 福清市| 涪陵区| 阳信县| 临海市| 深水埗区| 赫章县| 五寨县| 且末县| 汉川市| 离岛区| 安溪县| 呈贡县| 平定县| 鹿邑县| 革吉县| 肃北| 呼玛县| 广昌县| 罗定市| 西林县| 黄陵县| 建宁县| 尉氏县| 海阳市| 额尔古纳市| 仙游县| 泰州市| 绥滨县| 盐山县| 靖州|