2010-05-18 2 views
4

Если у меня есть метки в виде: гггг-мм-дд чч: мм: сс: мммC# Получение Просто Дата От Timestamp

Как я могу просто извлечь дату с отметкой времени?

Например, если временная метка гласит: «2010-05-18 08: 36: 52: 236», что является лучшим способом получить от него 2010-05-18.

То, что я пытаюсь сделать, это выделить часть даты временной метки, определить время, необходимое для создания новой отметки времени. Есть ли более эффективный способ определения времени временной метки без предварительного извлечения даты, а затем добавления нового времени?

+0

Вам нужно строковое представление даты простого удаления временной части? –

ответ

9

DateTime.Parse ("2010-05-18 08: 36: 52: 236"). ToString ("yyyy-MM-dd");

+0

У вас была возможность прочитать вторую часть моего вопроса? Если есть предпочтительный способ сделать это, мне бы очень хотелось узнать. В противном случае то, что вы написали здесь, кажется законным, спасибо. – sooprise

+0

Хорошо, что вы подразумеваете под «более эффективным»? Если вы хотите быстрее, вы можете сравнить различные методы с профилировщиком? Я думаю, что метод, предложенный Andomar, будет быстрее? (Подстрока) –

+0

Дает значение 'String не было признано действительным DateTime.' на моей машине – Andomar

2

Вы можете использовать substring:

"2010-05-18 08:36:52:236".Substring(0, 10); 

Или используйте ParseExact:

DateTime.ParseExact("2010-05-18 08:36:52:236", 
        "yyyy-MM-dd HH:mm:ss:fff", 
        CultureInfo.InvariantCulture) 
     .ToString("yyyy-MM-dd"); 
+0

+1 для ParceExact – fishhead

7

Вы должны использовать тип DateTime:

DateTime original = DateTime.Parse(str); 
DateTime modified = original.Date + new TimeSpan(13, 15, 00); 
string str = modified.ToString("yyyy-MM-dd HH:mm:ss:fff"); 

Ваш формат не является стандартным, так что вы необходимо позвонить ParseExact вместо Parse:

DateTime original = DateTime.ParseExact(str, "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture); 
1

Получить элемент .Date на DateTime

DateTime date = DateTime.Now; 
DateTime midnightDate = date.Date; 
2
DateTime date; 
if (DateTime.TryParse(dateString, out date)) 
{ 
    date = date.Date; // Get's the date-only component. 
    // Do something cool. 
} 
else 
{ 
    // Flip out because you didn't get a real date. 
} 
0

использовать его как это:

var x = DateTime.Now.Date; //will give you midnight today 

x.AddDays(1).AddTicks(-1); //use these method calls to modify the date to whats needed. 
+0

DateTime неизменен. Вы не можете изменить дату - вы создаете новую, которую вы выбрасываете вместо хранения в переменной. –

0

Лучший (и самый быстрый) способ сделать это для преобразования даты в целое число, поскольку временная часть хранится в десятичной части.

Попробуйте это:

select convert(datetime,convert(int, @yourdate)) 

Таким образом, вы преобразовать его в целое число, а затем обратно к данным и вуаля, время часть ушла.

Конечно, вычитая этот результат из первоначального значения, вы получите только часть времени.

Смежные вопросы