隨筆 - 17  文章 - 84  trackbacks - 0
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          如非特別說明,所有文章均為原創(chuàng)。如需引用,請(qǐng)注明出處
          Email:liangtianyu@gmail.com
          MSN:terry.liangtianyu@hotmail.com

          常用鏈接

          留言簿(4)

          隨筆分類(12)

          隨筆檔案(17)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 52106
          • 排名 - 961

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

             Java版的Lucene對(duì)時(shí)間的處理和.Net版中的有很大不同,下面我給出org.apache.lucene.document包下DateTools類的.Net完整實(shí)現(xiàn)。
             public class DateTools
              {
                  private static readonly string YEAR_FORMAT = "yyyy";
                  private static readonly string MONTH_FORMAT = "yyyyMM";
                  private static readonly string DAY_FORMAT = "yyyyMMdd";
                  private static readonly string HOUR_FORMAT = "yyyyMMddHH";
                  private static readonly string MINUTE_FORMAT = "yyyyMMddHHmm";
                  private static readonly string SECOND_FORMAT = "yyyyMMddHHmmss";
                  private static readonly string MILLISECOND_FORMAT = "yyyyMMddHHmmssfff";
                  public static readonly DateTime BASE_UNIVERSAL_TIME = DateTime.Parse("January 1, 1970, 00:00:00 GMT").ToUniversalTime();

           
                  public static string TimeToString(long l, Resolution resolution)
                  {
                      DateTime dt = LongToDateTime(l);

                      string result = string .Empty ;

                      switch (resolution)
                      {
                          case Resolution.YEAR:
                              result = dt.ToString(YEAR_FORMAT);

                              break;
                          case Resolution.MONTH:
                              result = dt.ToString(MONTH_FORMAT);

                              break;
                          case Resolution.DAY:
                              result = dt.ToString(DAY_FORMAT);

                              break;
                          case Resolution.HOUR:
                              result = dt.ToString(HOUR_FORMAT);

                              break;
                          case Resolution.MINUTE:
                              result = dt.ToString(MINUTE_FORMAT);

                              break;
                          case Resolution.SECOND:
                              result = dt.ToString(SECOND_FORMAT);

                              break;
                          case Resolution.MILLISECOND:
                              result = dt.ToString(MILLISECOND_FORMAT);

                              break;
                      }

                      return result;
                  }

                  public static string TimeToString(DateTime time, Resolution resolution)
                  {
                      return TimeToString(DateTimeToLong(time), resolution);
                  }

                  public static long Round(long time, Resolution resolution)
                  {
                      DateTime dt = BASE_UNIVERSAL_TIME.AddMilliseconds(time).ToUniversalTime();

                      switch (resolution)
                      {
                          case Resolution.YEAR:
                              dt = dt.AddMonths(1 - dt.Month).AddDays(1 - dt.Day).AddHours(0 - dt.Hour).AddMinutes(0 - dt.Minute).AddSeconds(0 - dt.Second).AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.MONTH:
                              dt = dt.AddDays(1 - dt.Day).AddHours(0 - dt.Hour).AddMinutes(0 - dt.Minute).AddSeconds(0 - dt.Second).AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.DAY:
                              dt = dt.AddHours(0 - dt.Hour).AddMinutes(0 - dt.Minute).AddSeconds(0 - dt.Second).AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.HOUR:
                             dt = dt.AddMinutes(0 - dt.Minute).AddSeconds(0 - dt.Second).AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.MINUTE:
                              dt = dt.AddSeconds(0 - dt.Second) .AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.SECOND:
                              dt = dt.AddMilliseconds(0 - dt.Millisecond);

                              break;
                          case Resolution.MILLISECOND:
                              break;
                      }

                      return DateTimeToLong(dt);
                  }

                  public static DateTime Round(DateTime date, Resolution resolution)
                  {
                      return LongToDateTime(Round(DateTimeToLong(date), resolution));
                  }

                  public static long DateTimeToLong(DateTime time)
                  {
                      return (long)(time.ToUniversalTime() - BASE_UNIVERSAL_TIME).TotalMilliseconds;
                  }

                  public static DateTime LongToDateTime(long l)
                  {
                      return BASE_UNIVERSAL_TIME.AddMilliseconds(l).ToUniversalTime();
                  }

                  public enum Resolution
                  {
                      YEAR,
                      MONTH,
                      DAY,
                      HOUR,
                      MINUTE,
                      SECOND,
                      MILLISECOND
                  }
              }

          posted on 2007-05-17 12:00 Terry Liang 閱讀(1698) 評(píng)論(2)  編輯  收藏 所屬分類: Lucene 2.1研究

          FeedBack:
          # re: 基于Lucene 2.1研究:時(shí)間的處理 2007-07-12 10:53 heavenking
          誰給我講講“private static readonly”這一句是啥意思?????小第初學(xué)!謝謝了。
            回復(fù)  更多評(píng)論
            
          # re: 基于Lucene 2.1研究:時(shí)間的處理 2007-07-12 11:01 Terry Liang
          @heavenking
          私有的靜態(tài)的只讀變量
          私有:此變量只在類內(nèi)部可以訪問
          靜態(tài):此變量只會(huì)在類初始化時(shí)創(chuàng)建一次
          只讀:運(yùn)行時(shí)不可以改變此變量的值  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 沈丘县| 沧州市| 德兴市| 汉中市| 仁布县| 荥阳市| 扎囊县| 山阴县| 乌拉特前旗| 邹城市| 成都市| 墨脱县| 武川县| 玉田县| 周宁县| 万载县| 峡江县| 密山市| 乌审旗| 民丰县| 镇巴县| 罗田县| 正镶白旗| 芜湖市| 秦安县| 江西省| 杂多县| 垫江县| 鄂托克旗| 叶城县| 罗江县| 呼图壁县| 汉川市| 青海省| 黄浦区| 东阿县| 璧山县| 大方县| 屯留县| 新乡县| 方城县|