NekoNao Ответов: 3

Сравнение двух дат в VB.Net-что?


У меня есть этот код, который сравнивает дату от gridview до date.today
но похоже это не работает


"select * from out_logtable  order by outid desc limit 1")
DataGridView1.DataSource = Me.BindingSource1
DataGridView1.AutoGenerateColumns = True
Dim x As String = DateAndTime.Today.ToString("d")
Dim y As String = DataGridView1.Rows(0).Cells(2).Value.ToString
If DataGridView1.Rows(0).Cells(1).Value <> "admin" Then
    If x.ToString > y.ToString Then
        ExecuteSQL(1, "Update login_table set hour = '2' ")
    End If
Else

End If

3 Ответов

Рейтинг:
4

Maciej Los

VB.NET "знает" Дата тип данных[^Он содержит даты с 1 января 0001 года по 31 декабря 9999 года и время с 12:00:00 утра (полночь) до 11:59:59.9999999 вечера.

Пример 1 - использование простого оператора '=' :

Dim a As Date = CDate("2014-09-12"), b As Date = Date.Now

If a = b Then
    Console.WriteLine("Dates are equal {0}={1}", a, b)
Else
    Console.WriteLine("Dates aren't equal {0}<>{1}", a, b)
End If

Console.ReadKey()


Пример 2 - Использование Метод сравнения[^]:
Dim date1 As Date = #08/01/2009 12:00AM#
Dim date2 As Date = #08/01/2009 12:00PM#
Dim result As Integer = DateTime.Compare(date1, date2)
Dim relationship As String

If result < 0 Then
   relationship = "is earlier than"
ElseIf result = 0 Then
   relationship = "is the same time as"
Else
   relationship = "is later than"
End If

Console.WriteLine("{0} {1} {2}", date1, relationship, date2)


Пример 3 - Использование Функция DateDiff[^]:
Dim firstDate, msg As String
Dim secondDate As Date
firstDate = InputBox("Enter a date")
Try
    secondDate = CDate(firstDate)
    msg = "Days from today: " & DateDiff(DateInterval.Day, Now, secondDate)
    MsgBox(msg)
Catch
    MsgBox("Not a valid date value.")
End Try



Примечание: как объясняется здесь: Сводка Типов Данных (Visual Basic)[^], Тип данных date используется структура datetime - это просто.


Sergey Alexandrovich Kryukov

5ед. Я бы предпочел, чтобы избежать ВБ-специфические API и держать до .Чистая ОУЗ, когда это возможно, а потом ГКЛ.
—СА

Maciej Los

Спасибо, Сегей ;)
Не могли бы вы быть так любезны и объяснить значения слов: BCL и FCL? Насколько я знаю, BCL - это библиотека базовых классов, но FCL-я никогда раньше не встречал этого утверждения, насколько помню.

Sergey Alexandrovich Kryukov

Конечно. Библиотека базовых классов, библиотека Фреймворковых классов (шире, BCL + то, что не входит в стандарт ECMA) — пожалуйста, ознакомьтесь с терминами в Википедии.
—СА

Maciej Los

Я не был уверен в значении FCL, потому что нашел для него более одного значения.
Спасибо за разъяснение, Сергей.

Рейтинг:
2

Sergey Alexandrovich Kryukov

Чтобы продолжить Решение 1:

...а затем сравните экземпляры структуры System.DateTime используя оператор '=' или '<>', что означает "тот же самый момент времени" или "не тот же самый момент времени".
Обратите внимание, что вы также можете использовать '<' (раньше, чем), '>' (позже, чем), '>=' (не раньше, чем), '<=' (не позже, чем).

Пожалуйста смотрите: http://msdn.microsoft.com/en-us/library/system.datetime%28v=vs.110%29.aspx[^].

Кроме того, я не знаю, каков ваш источник привязки, но если вы используете базу данных, не храните данные, связанные со временем, в виде строковых данных. Для этих целей существуют специальные типы данных, такие как дата.

—СА


Maciej Los

Это ... VB.NET, а не C#. Простого " = " было бы достаточно.

Sergey Alexandrovich Kryukov

А... ну, спасибо. Исправлено.
—СА

Maciej Los

Так вот, это правильно. 5ed!
Пожалуйста, смотрите мой ответ.

Sergey Alexandrovich Kryukov

Спасибо тебе, Мацей, особенно за исправление (еще одно исправление-C# "!=").
—СА

Рейтинг:
0

Dave Kreskowiak

Сравнивает две даты?? - Нет, не знаешь. Вы должны написать код, который сравнивает две строки, а не даты. Сравнение не одно и то же.

Преобразуйте значения в DateTime, а не в строки.


Sergey Alexandrovich Kryukov

5, но ответ должен быть продолжен; я сделал это в решении 2. :-)
—СА

Dave Kreskowiak

Да, у меня было мало времени.

Maciej Los

Хорошая мысль, пятерка!