db.collection.find({"createdDate":{$gte:new ISODate("2017-04-14T23:59:59Z"),$lte:new ISODate("2017-04-15T23:59:59Z")}}).count();
Замените collection
именем коллекции, которую хотите выполнить запрос
что относительно DateTime. MinValue?
TimeSpan несомненно может сохранить время дня - просто необходимо рассматривать значение, поскольку количество времени протекло с полуночи, в основном тот же способ, которым мы читаем часы.
Для отображения TimeSpan, отформатированного с местной культурой, просто добавьте его к дате как DateTime. Сегодня. Что-то вроде этого:
(DateTime. Сегодня + промежуток).ToString ();
, Так как Ваше значение действительно не представляет дату, Вы - более обеспеченное хранение его как TimeSpan, пока время не настает для отображения его.
Лично я создал бы пользовательское Time
struct
, который содержит DateTime
экземпляр, и который имеет подобные свойства, конструкторы и т.д., но не представляет дни/месяцы/и т.д. Просто сделайте всю свою общедоступную передачу средств доступа до содержавшего экземпляра. Тогда у Вас может просто быть эпоха как private static readonly DateTime
поле, и не имеет значения, что оценивает Вас, выбирают, поскольку это все аккуратно содержится в Вашей пользовательской структуре. В остальной части Вашего кода может просто записать:
var time = new Time(16, 47, 58);
Можно просто создать новый DateTime со строковым литералом.
Строковый литерал в течение времени:
DateTime t = new DateTime("01:00:30");
Строковый литерал для даты:
DateTime t = new DateTime("01/05/2008"); // english format
DateTime t = new DateTime("05.01.2008"); // german format
Для DateTime со значениями даты и времени:
DateTime t = new DateTime("01/05/2008T01:00:30");
В большинстве случаев, при создании DateTime, я установил его на DateTime. Теперь, если это на самом деле не установлено ни на что больше. При инстанцировании DateTime вручную необходимо остерегаться набора DateTimeKind правильно, иначе это могло привести к неожиданностям.
Учитывая, что DateTime. TimeOfDay возвращает TimeSpan, я использовал бы это.
, Почему Вы не можете использовать TimeSpan? Я не понимаю Ваш комментарий, что это не хранит время суток.
Как насчет DateTime.Now.TimeOfDay
, и использование TimeSpan
?
Ре, "потому что это не хранит времена дня". - хорошо, это делает, если Вы думаете TimeSpan
как время с полуночи.
А "продолжительность", например, крики TimeSpan
.
Я могу предположить, что в некоторых случаях пользовательская структура могла сделать? Это могло иметь значение поддержки Int32 (за день существует 86 миллионов миллисекунд; это поместилось бы в Int32).
могли быть свойства только добирания:
Мелкие Миллисекунды Секунд Часов
Вы могли также перегрузить операторы такой как +, - и так далее. Реализуйте IEquatable, IComparable и независимо от того, что может иметь место. Перегрузка Равняется, ==. Перегрузка и переопределение ToString.
Вы могли также предоставить больше методов, чтобы создать из DateTime или добавить к дате и времени и так далее.
Используйте TimeSpan и сделайте его UTC, если у Вас есть проблемы TimeZone.
Давайте поможем ребятам, которым нужна структура времени:
/// <summary>
/// Time structure
/// </summary>
public struct Time : IComparable
{
private int minuteOfDay;
public static Time Midnight = "0:00";
private static int MIN_OF_DAY = 60 * 24;
public Time(int minuteOfDay)
{
if (minuteOfDay >= (60 * 24) || minuteOfDay < 0)
throw new ArgumentException("Must be in the range 0-1439", "minuteOfDay");
this.minuteOfDay = minuteOfDay;
}
public Time(int hour, int minutes)
{
if (hour < 0 || hour > 23)
throw new ArgumentException("Must be in the range 0-23", "hour");
if (minutes < 0 || minutes > 59)
throw new ArgumentException("Must be in the range 0-59", "minutes");
minuteOfDay = (hour * 60) + minutes;
}
#region Operators
public static implicit operator Time(string s)
{
var parts = s.Split(':');
if (parts.Length != 2)
throw new ArgumentException("Time must be specified on the form tt:mm");
return new Time(int.Parse(parts[0]), int.Parse(parts[1]));
}
public static bool operator >(Time t1, Time t2)
{
return t1.MinuteOfDay > t2.MinuteOfDay;
}
public static bool operator <(Time t1, Time t2)
{
return t1.MinuteOfDay < t2.MinuteOfDay;
}
public static bool operator >=(Time t1, Time t2)
{
return t1.MinuteOfDay >= t2.MinuteOfDay;
}
public static bool operator <=(Time t1, Time t2)
{
return t1.MinuteOfDay <= t2.MinuteOfDay;
}
public static bool operator ==(Time t1, Time t2)
{
return t1.GetHashCode() == t2.GetHashCode();
}
public static bool operator !=(Time t1, Time t2)
{
return t1.GetHashCode() != t2.GetHashCode();
}
/// Time
/// Minutes that remain to
/// Time conferred minutes
public static Time operator +(Time t, int min)
{
if (t.minuteOfDay + min < (24 * 60))
{
t.minuteOfDay += min;
return t;
}
else
{
t.minuteOfDay = (t.minuteOfDay + min) % MIN_OF_DAY;
return t;
}
}
public static Time operator -(Time t, int min)
{
if (t.minuteOfDay - min > -1)
{
t.minuteOfDay -= min;
return t;
}
else
{
t.minuteOfDay = MIN_OF_DAY + (t.minuteOfDay - min);
return t;
}
}
public static TimeSpan operator -(Time t1, Time t2)
{
return TimeSpan.FromMinutes(Time.Span(t2, t1));
}
#endregion
public int Hour
{
get
{
return (int)(minuteOfDay / 60);
}
}
public int Minutes
{
get
{
return minuteOfDay % 60;
}
}
public int MinuteOfDay
{
get { return minuteOfDay; }
}
public Time AddHours(int hours)
{
return this + (hours * 60);
}
public int CompareTo(Time other)
{
return this.minuteOfDay.CompareTo(other.minuteOfDay);
}
#region Overrides
public override int GetHashCode()
{
return minuteOfDay.GetHashCode();
}
public override string ToString()
{
return string.Format("{0}:{1:00}", Hour, Minutes);
}
#endregion
///
/// Safe enumerering - whatever interval applied max days
///
/// Start time
/// Spring in minutes
///
public static IEnumerable Range(Time start, int step)
{
return Range(start, start, step);
}
///
/// Safe enumeration - whatever interval applied max days
///
public static IEnumerable Range(Time start, Time stop, int step)
{
int offset = start.MinuteOfDay;
for (var i = 0; i < Time.Span(start, stop); i += step)
{
yield return Time.Midnight + (i + offset);
}
}
///
/// Calculates the number of minutes between t1 and t2
///
public static int Span(Time t1, Time t2)
{
if (t1 < t2) // same day
return t2.MinuteOfDay - t1.MinuteOfDay;
else // over midnight
return MIN_OF_DAY - t1.MinuteOfDay + t2.MinuteOfDay;
}
}