2013-07-26 3 views
0

Я использую C#. Мне нужно, чтобы временные интервалы были вставлены в базу данных с интервалом 15 минут (с 7 утра до 10 вечера). Я использовал этот код:Преобразование TimeSpan в формат 12 часов

  for (int i = 0; i < 61; i++){ 
      TimeSpan curtime = new TimeSpan(7, y, 00); 
      y=y+15;} 

Но это возвращает меня слоты в 24 часов от 7:00:00 т.е. до 22:00:00. Как я могу это изменить?

+0

Не могли бы вы объяснить, лучше, что «формат», как ожидается? И в каком типе данных в базе данных вы пытаетесь сохранить формат? – Steve

+0

Я хожу, как раз в базе данных. он хранится как 13:00:00, но я хочу хранить как 01:00:00 –

ответ

0

вы можете использовать некоторые вещи, как

Datetime.Now.AddMinutes(15) 

замена DateTime.Now с вашим variale

0

TimeSpan для продолжительности, вы должны использовать DateTime (и метод DateTime.ToString(String)), если вы хотите форматировать выход в 12-часовом формате

1

DateTime column in a database (как SQL Server) хранится в виде пары из четырех байтовых числовых значений, где первые 4 байта - это количество дней с определенного базового времени (1900/1/1), а во втором - четыре миллисекунды с полуночи.
Итак, когда вы говорите о format, это формат отображения вашего значения datetime, и вы получите его так, как он выглядит, потому что есть преобразование из внутреннего формата в строку, понятную нам. Но в базе данных время datetime всегда хранится во внутреннем формате

Итак, чтобы сохранить свой временной интервал, не нужно готовить специальный формат, используйте только текущую дату и прирост на 15 минут в каждом цикле и дайте базе данных хранить его, как он считает целесообразными

List<DateTime> slots = new List<DateTime>(); 
DateTime dt = new DateTime(2013, 7, 26, 7, 0, 0); 
for (int i = 0; i < 61; i++) 
{ 
     // Save in a list 
     slots.Add(dt); 

     // Calculate next slot 
     dt = dt.AddMinutes(15); 
} 
// Save all the slots to the database 
SaveSlots(slots); 

Для отображения DateTime

DataTable slots = GetSlotsFromDataBase(); 
foreach(DataRow r in slots.Rows) 
    Console.WriteLine(Convert.ToDateTime(r[0]).ToString("hh:mm tt"); 
Смежные вопросы