Unix time в читаемый вид?

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

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

Код: Выделить всё

# Считаются только unsigned
# условие проверки високосного года ограничено текущей соткой
:global UnixTimeToFormat do={
:local dateY ($timeStamp / 31436000 + 1970);
:local dateM (($dateY - 1969) / 4);
:local dateD ($timeStamp / 86400 - $dateM);
:set $dateY ($dateD / 365 + 1970);
:set $dateD ($dateD % 365);
:local months [:toarray (31,28,31,30,31,30,31,31,30,31,30,31)]
:if (($dateY % 4) = 0) do={:set ($months->1) 29;}
do {
:for i from=0 to=11 do={:if (($months->$i) >= $dateD) do={:set $dateM ($i + 1); :set $dateD ($dateD +1); break;} else={:set $dateD ($dateD - ($months->$i))}}
} on-error={}
:log info $dateD;
:log info $dateM;
:log info $dateY;
:local timeS ($timeStamp % 86400);
:local timeH ($timeS / 3600);
:local timeM ($timeS % 3600 / 60);
:set $timeS ($timeS - $timeH * 3600 - $timeM * 60);
:log info $timeH;
:log info $timeM;
:log info $timeS;
}


Ответить