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

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

          常用鏈接

          留言簿(4)

          隨筆分類(12)

          隨筆檔案(17)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 51903
          • 排名 - 962

          最新評論

          閱讀排行榜

          評論排行榜

             Java版的Lucene對時間的處理和.Net版中的有很大不同,下面我給出org.apache.lucene.document包下DateTools類的.Net完整實現。
             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 閱讀(1693) 評論(2)  編輯  收藏 所屬分類: Lucene 2.1研究

          FeedBack:
          # re: 基于Lucene 2.1研究:時間的處理 2007-07-12 10:53 heavenking
          誰給我講講“private static readonly”這一句是啥意思?????小第初學!謝謝了。
            回復  更多評論
            
          # re: 基于Lucene 2.1研究:時間的處理 2007-07-12 11:01 Terry Liang
          @heavenking
          私有的靜態的只讀變量
          私有:此變量只在類內部可以訪問
          靜態:此變量只會在類初始化時創建一次
          只讀:運行時不可以改變此變量的值  回復  更多評論
            
          主站蜘蛛池模板: 元氏县| 宁强县| 固镇县| 深水埗区| 名山县| 关岭| 佛坪县| 句容市| 黑龙江省| 安溪县| 五华县| 瑞安市| 江源县| 册亨县| 怀远县| 峨边| 芜湖县| 乌审旗| 涟源市| 长海县| 楚雄市| 平乡县| 麻城市| 双柏县| 大名县| 句容市| 那坡县| 久治县| 新绛县| 绥芬河市| 青川县| 灌阳县| 会东县| 锦屏县| 赫章县| 广东省| 泰兴市| 涞源县| 镇康县| 光山县| 调兵山市|