powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение даты
16 сообщений из 16, страница 1 из 1
Сравнение даты
    #36304645
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плз, как мне сравнить две даты?
у меня почему то только только дни сравниваются, а месяц и год нет

делаю так...

Me.Label5.Caption = Format$(Date, "dd.MM.yyyy")
Me.Label2.Caption = Format$(Time, "hh:nn:ss")

If Label5.Caption >= Label7.Caption And Label2.Caption > Label3.Caption Then
***
Else
***
End If

в лейблах тоже даты, в том же формате.. просто сравнить нужно их caption'Ы

вот неполучается...
...
Рейтинг: 0 / 0
Сравнение даты
    #36304648
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сначала преобразуй в тип Date, а уже потом сравнивай , например DateDiff()
...
Рейтинг: 0 / 0
Сравнение даты
    #36304672
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
If CDate(Label5.Caption) >= CDate(Label7.Caption) And CDate(Label2.Caption) > CDate(Label3.Caption) Then

Но тут есть подводный камень - нужно убедиться, что дата будет преобразовываться правильно. То есть 01.12.2009 - в 1 декабря, а не в 12 января. Иначе либо придется форматировать в анси-формате (2009-12-01), либо морочиться с перестановками аргументов, либо параллельно хранить дату в нативном формате.

Можно также хранить дату в Label7.Tag в анси-формате, тогда проблем с преобразованием не будет
...
Рейтинг: 0 / 0
Сравнение даты
    #36304681
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самое правильно: изначально иметь переменные типа Date и их сравнивать, а на label уже выводить в нужном тебе формате
...
Рейтинг: 0 / 0
Сравнение даты
    #36304698
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneсамое правильно: изначально иметь переменные типа Date и их сравнивать, а на label уже выводить в нужном тебе формате

А еще самое правильное, не называть активные метки Label1, Label2....

Какой был вопрос, такой был ответ :D
...
Рейтинг: 0 / 0
Сравнение даты
    #36305702
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое! Пока буду использовать CDate, по ходу сделаю как сказал
Konst_Oneсамое правильно: изначально иметь переменные типа Date и их сравнивать, а на label уже выводить в нужном тебе формате
...
Рейтинг: 0 / 0
Сравнение даты
    #36305762
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, но на строку

Код: plaintext
If CDate(Label5.Caption) >= CDate(Label7.Caption) And CDate(Label2.Caption) > CDate(Label3.Caption) Then

пишет

Код: plaintext
1.
Run-time error  13 
Type mismatch

Где тут ошибка...
...
Рейтинг: 0 / 0
Сравнение даты
    #36305832
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определенно в одном из лабелов не дата или вообще пустая строка.

Jah loves you.
...
Рейтинг: 0 / 0
Сравнение даты
    #36305840
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyОпределенно в одном из лабелов не дата или вообще пустая строка.

Jah loves you.

мда, так оно и есть..
...
Рейтинг: 0 / 0
Сравнение даты
    #36305895
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если CDate сравниваются даты , как время сравнить? CTime или как :)
...
Рейтинг: 0 / 0
Сравнение даты
    #36306118
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
datediff()
...
Рейтинг: 0 / 0
Сравнение даты
    #36306252
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterWEB
Если CDate сравниваются даты , как время сравнить? CTime или как :)

Функция CDate преобразует некое значение в тип Date . Это тип данных, который в "себе содержит" не только дату , но и время, т.е. дата+время . Стандарной функции CTime нету. Тебе нужно объединять дату и время из Label-ов. Например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Rem некий код
Dim mDateTime as Date
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy")
Me.Label2.Caption = Format$(Time, "hh:nn:ss")
mDateTime = CDate(Me.Label5.Caption & " " & Me.Label2.Caption)
MsgBox mDateTime
Rem некий код
MasterWEB
делаю так...
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy")
Me.Label2.Caption = Format$(Time, "hh:nn:ss")
If Label5.Caption >= Label7.Caption And Label2.Caption > Label3.Caption Then
***
Else
***
End If

сделай так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim dtNow As Date, dtComp As Date
dtNow = Now ' время в процессе выполнения проги может измениться
Label5.Caption = Format(dtNow, "dd.mm.yyyy")
Label2.Caption = Format(dtNow, "hh:mm:ss")
'некий код
'в Label7.Caption находится дата и в Label3.Caption - время
'некий код
If IsDate(Label7.Caption) And IsDate(Label3.Caption) Then
    dtComp = CDate(Label7.Caption) + CDate(Label3.Caption)
Else
    'это не даты
    'некий код
End If
If dtNow >= dtComp Then
    '***
    'некий код
Else
    '***
    'некий код
End If
...
Рейтинг: 0 / 0
Сравнение даты
    #36306484
MasterWEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.,

Большое спасибо! Тему можно закрывать.
...
Рейтинг: 0 / 0
Сравнение даты
    #36306498
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.
Код: plaintext
1.
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy")
Me.Label2.Caption = Format$(Time, "hh:nn:ss")


на всякий случай....
можно и так

Код: plaintext
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy hh:nn:ss")
...
Рейтинг: 0 / 0
Сравнение даты
    #36306754
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обрати внимание на ф-ции
Код: plaintext
1.
2.
3.
4.
DateSerial (yyyy,mm,dd) 'tempDate
TimeSerial(hh,mm,ss) 'tempTime
    Dim tempDate As String, tempTime As String
    Dim FullDate As Date
FullDate = tempDate & " " & tempTime
FullDate даст тебе то что можно сравнивать с точки зрения текущих региональных настроек.
Дело в том что то что работает в России и 100 раз "проверено", может внезапно глюкануть где-нибудь в Европе, чтобы это понять надо поиграться с региональными настройками.
...
Рейтинг: 0 / 0
Сравнение даты
    #36306972
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro.Михаил.
Код: plaintext
1.
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy")
Me.Label2.Caption = Format$(Time, "hh:nn:ss")


на всякий случай....
можно и так

Код: plaintext
Me.Label5.Caption = Format$(Date, "dd.MM.yyyy hh:nn:ss")

это я знаю, но у автора темы дата и время в разных Label-ах находится
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]