Дата и время в кларионе

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Для чего в кларионе дата и время преставляются отдельными переменными? Чем плохо кога дату и время преставляет одна переменная и ее можно выводить в формате "dd.mm.yyyy hh:mm:ss" легко и непринужденно :)
Неуобство собственно в том, что нужно представлять длительность события в формате hh:mm:ss, причем часов может быть больше 24 типа 26:43:25.
Как обойти это неудобство ? или нужно что-то ополнительно приумывать?
И еще вопрос имеется дата 11.02.2005 и время 23:59:59 - при добавлении одной секунды время сбрасывается в ноль. А дней не увеличивается. Вручную отслеживать?

Понаписал много конечно, бывает со мной такое. Хотелось бы услышать дельный совет новичку
Написал: bugz(215)
Гость

Сообщение Гость »

Для чего в кларионе дата и время преставляются отдельными переменными?
Наверное, потому, что все же чаще всего мы пользуемся именно понятиями
Дата и Время, а не ДатаВремя. Когда мне необходимо ДатаВремя я пользуюсь
нижеприведенными функциями.

DateTime_Out FUNCTION(DateTime) !Преобразует DateTime в Дату и время
GrStr GROUP
Date1 LONG
hh BYTE
mm BYTE
ss BYTE
.
StrOut STRING(7),OVER(GrStr)
CODE
! Вызов; Glo:StrDateTime = DateTime_Out(DateTime)
! Glo:Datet - дата
! Glo:hh - часы
! Glo:mm - минуты
! Glo:ss - секунды
!
Date1 = 0
hh = 0
mm = 0
ss = 0
If DateTime = 0 then Return(StrOut).
Dtt$ = (DateTime-315532800)/86400
Days# = Dtt$ ! Int((DateTime-315532800)/86400)
Date1 = Days# + date(01,01,1980) ! Дата
Sek# = DateTime-315532800 - Days#*86400 ! Секунды всего
hh = Int(Sek#/3600)
mm = (Sek# - hh*3600)/60
ss = Sek# - (hh*3600 + mm*60)
Return(StrOut)

DateTime_In FUNCTION(Date1,hh,mm,ss) !Преобр. Дату часы минуты сек в DateTime

CODE ! Begin Processing Code
Days# = Date1 - date(01,01,1980) !
Dt# = Days# * 86400 + 315532800
ss# = hh*3600 + mm*60 + ss
Dt# = Dt# + ss#
Return(Dt#)


Написал: Anatoly(38)
Ответить