C # Получение только дата из отметки времени - PullRequest
4 голосов
/ 18 мая 2010

Если у меня есть метка времени в форме: гггг-мм-дд чч: мм: сс: ммм

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

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

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

Ответы [ 7 ]

9 голосов
/ 18 мая 2010

DateTime.Parse ("2010-05-18 08: 36: 52: 236"). ToString ("гггг-ММ-дд");

7 голосов
/ 18 мая 2010

Вы должны использовать тип 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);
2 голосов
/ 18 мая 2010
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.
}
2 голосов
/ 18 мая 2010

Вы можете использовать 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");
1 голос
/ 18 мая 2010

Получите член .Date для DateTime

DateTime date = DateTime.Now;
DateTime midnightDate = date.Date;
0 голосов
/ 20 мая 2010

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

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

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

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

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

0 голосов
/ 18 мая 2010

используйте это так:

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.
...