Я должен сделать объект DateRange?

Лучше использовать именованные функции , чем arguments.callee:

 function foo () {
     ... foo() ...
 }

лучше, чем

 function () {
     ... arguments.callee() ...
 }

, именованная функция будет иметь доступ к своей вызывающей стороне через вызывающая сторона свойство:

 function foo () {
     alert(foo.caller);
 }

, который лучше, чем

 function foo () {
     alert(arguments.callee.caller);
 }

, депрекация происходит из-за текущего ECMAScript принципы разработки .

61
задан Viktor Dahl 3 June 2015 в 20:56
поделиться

4 ответа

Нет, вы не пропустили класс общего назначения.

У меня есть тип Range в MiscUtil , который может вас заинтересовать - и это, безусловно, упрощает манипуляции с DateTime . Ссылаясь на ответ Марка, я не могу вспомнить, является ли это структурой или классом - вы, конечно, можете изменить это.

Это приятно и легко пройти, благодаря махинациям дженериков Марка (при условии, что вы ' re с использованием .NET 3.5, по крайней мере - это возможно с 2.0, но не поддерживается на данный момент);

Range<DateTime> range = 19.June(1976).To(DateTime.Today);

foreach (DateTime date in range.Step(1.Days())
{
    // I was alive in this day
}

(Здесь также используется набор методов расширения - более полезных для тестирования, чем для производства.)

Чтобы обратиться к другому вопросу в ответе Марка Noda Time , безусловно, сможет лучше выразить концепцию даты, чем .NET API,

40
ответ дан 24 November 2019 в 17:25
поделиться

Я не знаю ни одного собственного .NET-класса с природой DateRange. Наиболее близким вариантом, вероятно, является комбинация DateTime + TimeSpan или DateTime / DateTime.

Я думаю, что то, что вы хотите, довольно разумно.

0
ответ дан 24 November 2019 в 17:25
поделиться

Как уже упоминали Марк и Джон, я бы создал это как тип значения, который является неизменяемым. Я бы предпочел реализовать его как структуру и реализовать интерфейсы IEquatable и IComparable.

При использовании ORM, такого как NHibernate, вы сможете сохранить тип значения внутри таблицы, представляющей сущность.

0
ответ дан 24 November 2019 в 17:25
поделиться

Если вы много работаете с датами, да - диапазон может оказаться полезным. На самом деле это один из тех очень редких случаев, когда вы должны , вероятно, записать его как struct (неизменяемая). Обратите внимание, однако, что «Noda Time», вероятно, даст вам все это и даже больше (когда оно будет завершено). Раньше я делал программное обеспечение для планирования; У меня была пара таких структур (для немного разных работ).

Обратите внимание, что для этого не существует удобной конструкции BCL.

Также - подумайте обо всех замечательных методах (и, возможно, операторах), которые вы можете централизовать, когда у вас есть диапазон; «содержит» (даты и времени? другого диапазона? включая / исключая пределы?), «пересекает», смещение по (промежуток времени) и т. д. определенный случай наличия типа для его обработки. Обратите внимание, что на уровне ORM

5
ответ дан 24 November 2019 в 17:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: