Каков наилучший способ обработки времени начала и окончания для события в C #, где события являются глобальными - PullRequest
1 голос
/ 14 марта 2012

Мы создаем приложение, которое будет перечислять события по всему миру.События охватывают несколько дней.

Мы хотим сохранить начало и конец события.

Должен ли я просто использовать 2 свойства DateTime и сохранять их все как UTC?

Должны ли мы просто хранить 2 точки во времени как тики?

Должны ли мы использовать TimeSpan?

Будет ли здесь хорошо NodaTime?

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Лично я бы все сохранил как время UTC.Поскольку .NET, естественно, поддерживает преобразование дат в UTC и обратно, вам не нужно беспокоиться о будущей совместимости.Большинство баз данных поддерживают хранение дат в формате UTC.Я бы также использовал TimeSpan для удобочитаемости кода при расчете периодов времени, но сохранение даты и времени в виде тиков может дать вам небольшое преимущество в производительности, поскольку вы можете выполнять сравнения без создания объектов DateTime.Зависит от того, сколько сравнений вы делаете.

0 голосов
/ 14 марта 2012
Tuple TimeSpan <long, long, long>;
TimeSpan myTimeSpan = new TimeSpan<start, end, difference>;

Вы используете точечную запись для доступа к таким элементам как; long start = myTimeSpan.item1; N-й элемент будет доступен; myTimeSpan.itemN;

Отсюда, если вам нужно время UTC, вы можете легко получить его, выполнив что-то вроде; DateTime начиная с UTC = новый DateTime (myTimeSpan.item1, UTC);

это конструктор; Публичный DateTime (длинные тики, вид DateTimeKind) позволит вам легко создавать объекты DateTime в UTC или по местному времени, когда вам нужно отобразить данные пользователю. В противном случае с тиками работать намного проще и эффективнее.

0 голосов
/ 14 марта 2012

Две даты как UTC в покое. Тогда будет иметь смысл выполнять операции, когда у вас есть начало и нет конца, так как событие в настоящее время происходит. Если хотите, WCF даже автоматически установит их местное время по сети (не забудьте установить DateTime.Kind).

DateTimes - это внутренние тики, поэтому их сохранение как тиков мало что дает. Они будут в тисках покоя в вашей БД.

...