public void DateToolsRoundShouldKeepTheSameDateTimeKind() { var originalDate = DateTime.Parse("2014-04-25T09:33:15.6457886Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind); var roundedDate = DateTools.Round(originalDate, DateTools.Resolution.SECOND); var expectedTime = DateTime.Parse("2014-04-25T09:33:15Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind); Assert.Equal(expectedTime, roundedDate); Assert.Equal(expectedTime.Kind, roundedDate.Kind); }
public virtual void TestRound() { // we use default locale since LuceneTestCase randomizes it //Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.Default); //cal.clear(); DateTime cal = new DateTime(2004, 2, 3, 22, 8, 56, 333, new GregorianCalendar()); // hour, minute, second - year=2004, month=february(!), day=3 //cal.set(DateTime.MILLISECOND, 333); DateTime date = cal; Assert.AreEqual("2004-02-03 22:08:56:333", IsoFormat(date)); DateTime dateYear = DateTools.Round(date, DateTools.Resolution.YEAR); Assert.AreEqual("2004-01-01 00:00:00:000", IsoFormat(dateYear)); DateTime dateMonth = DateTools.Round(date, DateTools.Resolution.MONTH); Assert.AreEqual("2004-02-01 00:00:00:000", IsoFormat(dateMonth)); DateTime dateDay = DateTools.Round(date, DateTools.Resolution.DAY); Assert.AreEqual("2004-02-03 00:00:00:000", IsoFormat(dateDay)); DateTime dateHour = DateTools.Round(date, DateTools.Resolution.HOUR); Assert.AreEqual("2004-02-03 22:00:00:000", IsoFormat(dateHour)); DateTime dateMinute = DateTools.Round(date, DateTools.Resolution.MINUTE); Assert.AreEqual("2004-02-03 22:08:00:000", IsoFormat(dateMinute)); DateTime dateSecond = DateTools.Round(date, DateTools.Resolution.SECOND); Assert.AreEqual("2004-02-03 22:08:56:000", IsoFormat(dateSecond)); DateTime dateMillisecond = DateTools.Round(date, DateTools.Resolution.MILLISECOND); Assert.AreEqual("2004-02-03 22:08:56:333", IsoFormat(dateMillisecond)); // long parameter: long dateYearLong = DateTools.Round(date.Ticks / TimeSpan.TicksPerMillisecond, DateTools.Resolution.YEAR); Assert.AreEqual("2004-01-01 00:00:00:000", IsoFormat(new DateTime(dateYearLong))); long dateMillisecondLong = DateTools.Round(date.Ticks / TimeSpan.TicksPerMillisecond, DateTools.Resolution.MILLISECOND); Assert.AreEqual("2004-02-03 22:08:56:333", IsoFormat(new DateTime(dateMillisecondLong))); }
/// <summary> /// Returns the ticks to be indexed, then use NumericRangeQuery to query against it /// </summary> /// <param name="date"></param> /// <returns></returns> protected long DateToLong(DateTime date) { return(DateTools.Round(date, Resolution).Ticks); }