csusky

常用链接

统计

最新评论

org.apache.lucene.document.DateField

该类提供了日期和字符串之间的相互转化,实际上是 long型和String型的相互转化,转化时用到了一个不常用的
Long.toString(long,int);方法。是按指定的方式对long型进行转化
第一个参数是要转化的long,第二个参数是转化时候的基数,如果基数是10就相当于方法Long.toString(long);
这里使用的参数是最大值,即36== 10个数字+26个英文字母。这样转化出来的字符串长度比较短,占用比较少的空间,
另外,在转化时,统一了转化后的字符串长度,如果不足9位(日期的long转化后最高为9位,1970之后的日期可正确转换),
统一长度后的字符串可以通过比较字符串来比较日期的大小。


日期转化成的字符串类似于
0fev8eza3
本来应该是fev8eza3 采取了不足9位补0的方法。

  private static int DATE_LEN = Long.toString(1000L*365*24*60*60*1000,
            Character.MAX_RADIX).length();
计算出从1970年开始后1000年的时间转化为字符串后的长度,所有转化后的时间都不应超过这个长度,如果不足则在前面补0

可以通过字符串转化为日期的函数计算出能表示的最大日期为
stringToTime("zzzzzzzzz");
打印出来是 Fri Apr 22 19:04:28 CST 5188  
所以该函数能转化的日期范围为 1970-1-1~~5188-4-22


日期转化为字符串
public static String timeToString(long time)

字符串转化为日期
public static long stringToTime(String s)


实际上 函数 LongToString(long i,int radix) 相当于  先将i转化为radix进制的整数,然后再用函数
LongToString(i)转化为字符串。所以radix的值应该在2--36之间如果不是 则按照10进制计算。

posted on 2008-04-10 19:26 晓宇 阅读(331) 评论(0)  编辑  收藏 所属分类: LUCENE


只有注册用户登录后才能发表评论。


网站导航: