隨筆 - 17  文章 - 84  trackbacks - 0
          <2007年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

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

          常用鏈接

          留言簿(4)

          隨筆分類(12)

          隨筆檔案(17)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 51905
          • 排名 - 962

          最新評論

          閱讀排行榜

          評論排行榜

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

          FeedBack:
          # re: 基于Lucene 2.1研究:時間的處理 2007-07-12 10:53 heavenking
          誰給我講講“private static readonly”這一句是啥意思?????小第初學!謝謝了。
            回復(fù)  更多評論
            
          # re: 基于Lucene 2.1研究:時間的處理 2007-07-12 11:01 Terry Liang
          @heavenking
          私有的靜態(tài)的只讀變量
          私有:此變量只在類內(nèi)部可以訪問
          靜態(tài):此變量只會在類初始化時創(chuàng)建一次
          只讀:運行時不可以改變此變量的值  回復(fù)  更多評論
            
          主站蜘蛛池模板: 临邑县| 宜良县| 丰台区| 和林格尔县| 云南省| 蕲春县| 德江县| 石河子市| 巫山县| 岳西县| 莒南县| 新宁县| 宁南县| 克东县| 新昌县| 铁力市| 杂多县| 祁阳县| 滨州市| 叶城县| 浦东新区| 两当县| 贵州省| 扎赉特旗| 长岛县| 吉木萨尔县| 泊头市| 金川县| 汽车| 屏东县| 文水县| 舒兰市| 孝昌县| 广元市| 百色市| 临高县| 察隅县| 元阳县| 西和县| 英山县| 庄河市|