@Ntari

Какой тип лучше подходит для хранения времени?

Мне надо хранить время начала и конца работы заведения. Какой тип для этого лучше подходит? Например DateTime даже не имеет конструктора чисто по времени - дату надо все-равно указывать. А TimeSpan логически не очень подходит имхо - мне ведь надо хранить конкретное время (например в 9:00 открытие, в 18:00 закрытие), а не промежуток времени...

UPD. Меня неправильно поняли. Я спрашивал именно в C# тип какой использовать для этого. А не как это будет в базе выглядеть. Int - неудобно для использования.
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 7
GavriKos
@GavriKos
int. Количество секунд с какого то момента. Например - с полуночи.
Ответ написан
mshak
@mshak
Судя по вашей задаче вам все-таки больше всего подходит именно TimeSpan. Странно что вы его отбросили, при этом рассматривали DateTime, т.к. внутри этой структуры время определено как:
public TimeSpan TimeOfDay { get; }

К тому же TimeSpan хранит не то что бы интервал, а количество времени прошедшее с полуночи.
Ответ написан
Комментировать
lam0x86
@lam0x86
Я бы тоже использовал TimeSpan, или обернул его в свой тип. Как альтернатива - использовать тип LocalTime из библиотеки Noda Time, который как раз предназначен для хранения времени суток. Но это пушкой по воробьям.
Ответ написан
Комментировать
byte916
@byte916
TimeSpan идеально подходит для хранения конкретного времени. Он хранит не промежуток а конкретное время.
А вообще, если вам нужно хранить именно пары времени (начало и конец), и конец может быть на следующий день (например с 9 утра до часа ночи) или вам нужно работать с таймзонами, то вам, скорее всего, понадобится собственный тип. В нём можно хранить пары времени, проверять к какому дню относится нужное время (например, если вам нужно выяснить к какой смене относится время 0:30) итд.
Ответ написан
@HEKOT
Embedded
Смотря что с этим временем делать.
Например, если у Вас есть точная дата и время, то написать вручную универсальную функцию инкремента -- ОЧЕНЬ большой геморрой! Если надо большими промежутками времени оперировать, то целое количество секунд надо в 64-битном инте хранить.
Ответ написан
Комментировать
arxont
@arxont
C# программист
А что вам мешает создать свой тип?
Ответ написан
Комментировать
@baimkin
Чем не нравится хранение в таком виде:
string time = DateTime.Now.ToString("HH:mm:ss");

если надо посчитать сколько минут между утром и вечером(Now):
double minutes = Math.Round(DateTime.Now.Subtract(DateTime.Parse(time)).TotalMinutes);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы