Unix time в читаемый вид?
Добавлено: 24 май 2020, 13:39
понадобилось такое действие. Нет ни у кого в загашниках красивой функции?
Себе пока накидал, вроде тарахтит, но гложет меня что то внутри от не до деланности.
Себе пока накидал, вроде тарахтит, но гложет меня что то внутри от не до деланности.
Код: Выделить всё
# Считаются только 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;
}