пример простейший можно? что-то в доке написано как-то..... да и пример из доки у меня не заработал.
пример простейший можно? что-то в доке написано как-то..... да и пример из доки у меня не заработал.
Пожалуйста:
FUNCTION_BLOCK DateAndTimeStr
...
VAR_OUTPUT
DateStr: STRING;
...
END_VAR
VAR
CTimeEX: CurTimeEx;
SystemTime: SysTime64;
TimeDate: SystemTimeDate;
StrTemp1: STRING;
StrTemp0: STRING;
END_VAR
(* получение системного времени *)
LD 0
ST TimeDate.Milliseconds
ST TimeDate.Second
ST TimeDate.Minute
ST TimeDate.Hour
ST TimeDate.Day
ST TimeDate.DayOfWeek
ST TimeDate.Month
ST TimeDate.Year
ST SystemTime.ulLow
ST SystemTime.ulHigh
CAL CTimeEX(SystemTime:=SystemTime, TimeDate:=TimeDate)
(* подготовка строки "дата" в формате DD Month YYYY (16) *)
LD TimeDate.Year
INT_TO_STRING
ST StrTemp1
LD DateFormat
(* вывод названия месяца *)
LD TimeDate.Month
SUB 1
MUX ' января ', ' февр. ', ' марта ', ' апреля ', ' мая ', ' июня ', ' июля ', ' авг. ', ' сент. ', ' окт. ', ' ноября ', ' дек. '
CONCAT StrTemp1
ST StrTemp1
LD TimeDate.Day
INT_TO_STRING
INSERT '0', 0
RIGHT 2
CONCAT StrTemp1
ST DateStr
ну и т.д. для времени.
Удачи.
В примере выше время конвертируется в строку.
А как перевести полученные INT-овые дату и время в формат DATE_AND_TIME (в секундах)?
Время-то таким образом переводить можно. А вот как перевести дату? Нет чёткого алгоритма, на сколько умножать, например, месяцы. Потому что в месяце может быть разное количество дней.
Или, может быть, кто-то подскажет другой способ получения текущих даты/времени в секундах от 01/01/1970.
Последний раз редактировалось Vitaly K.; 18.06.2009 в 16:36.