Как сравнить DateTime со строкой - PullRequest
6 голосов
/ 28 апреля 2010

У меня есть строка, которая содержит время (полученное из БД):

string user_time = "17:10:03"; //Hours:minutes:seconds
DateTime time_now = DateTime.Now;

Как мне сравнить эту строку с DateTime? Я хотел бы что-то вроде этого:

if(time_now > user_time)
{
    //Do something
}
else
{
  //Do something
}

Ответы [ 6 ]

16 голосов
/ 28 апреля 2010

DateTime поддерживает сравнение, но сначала вам нужно проанализировать строку даты-времени, DateTime.Parse () должно хватить:

var dateTimeStr = "17:10:03";
var user_time = DateTime.Parse( dateTimeStr );
var time_now = DateTime.Now;

if( time_now > user_time )
{
  // your code...
}

Имейте в виду, что сравнение дат / времени иногда требует осведомленности о часовых поясах, чтобы сделать сравнение значимым.

2 голосов
/ 28 апреля 2010

Проблема в том, что DateTime.Now содержит дату, а "17:10:03" - нет. Сделайте это так:

    Dim dbaseTime As TimeSpan = TimeSpan.Parse("17:10:03")
    If DateTime.Now.TimeOfDay > dbaseTime Then
        Console.WriteLine("Let's go home")
    End If

Сделайте все, что в ваших силах, чтобы преобразовать этот тип столбца в столбец даты и времени.

1 голос
/ 28 апреля 2010
if (DateTime.Now > DateTime.Parse(user_time))
{
   ...
}

Но вам не следует хранить время в виде строки, вы должны использовать собственный формат времени или даты-времени вашей базы данных, чтобы вы могли использовать значение времени в своих запросах и правильно их индексировать. *

1 голос
/ 28 апреля 2010

DateTime.Parse Преобразует строку в объект DateTime, который затем можно использовать для сравнения.

1 голос
/ 28 апреля 2010

Вы можете использовать DateTime.Compare () вместе с DateTime.Parse () для преобразования строки в объект DateTime.

0 голосов
/ 28 апреля 2010
if (time_now > Date.Parse(DBString)) {

} else {

}
...