Sorry, I do not speak English.
I do not know if this will help you.
I did this job a long time ago.
you only have to add the total time and the formula that already has the correct calculations for leap year, and you can add the time zone.
if you add a return you can pick up this data structure, and you can do other functions to show the time the way you want.
this code was created to create a date that is in the future.
Code: Select all
program data(character)
var year := {2678400,2419200,2678400,2592000,2678400,2592000,2678400,2678400,2592000,2678400,2592000,2678400};
var leap_year := {2678400,2505600,2678400,2592000,2678400,2592000,2678400,2678400,2592000,2678400,2592000,2678400};
var date := struct{"second":=0,"minute":=0,"hour":=0,"day":=1,"month":=1,"year":=1970};
var time := polcore().systime;//add the time here in the future
//time := (time - 3*60*60); //com Fuso horário do brasil - 3 horas
var quociente := cint(time / 126230400);// 126230400 é igual a 3 anos normais + 1 bissexto, transformados em segundos
time := ( time - ( quociente * 126230400 )) ;// time = quantos 4 anos cabem no total
date.year := ( date.year + quociente*4 );
while(time >= 31536000)
if(date.year % 4 == 0)
date.year := ( date.year + 1 );
time := ( time - 31622400 );
else
date.year := ( date.year + 1 );
time := ( time - 31536000 );
endif
endwhile
if(date.year % 4 == 0)
while(time >= leap_year[date.month] )
time := ( time - leap_year[date.month] );
date.month := ( date.month + 1 );
endwhile
else
while(time >= year[date.month] )
time := ( time - year[date.month] );
date.month := ( date.month + 1 );
endwhile
endif
quociente := cint( time / 86400 );
time := ( time - ( quociente * 86400 )) ;
date.day := (date.day + quociente );
quociente := cint( time / 3600 );
time := ( time - ( quociente * 3600 )) ;
date.hour := (date.hour + quociente );
quociente := cint( time / 60 );
date.minute := (date.minute + quociente );
date.second := ( time - ( quociente * 60 )) ;
SendSysMessage( character," Clock "+date.hour+":"+date.minute+":"+date.second, 3, 33 );
SendSysMessage( character," Date "+date.month+"/"+date.day+"/"+date.year, 3, 33 );
endprogram
OR
use util::StrFormatTime( format_string, time_stamp:=0 ), time_stamp == future
http://www.cppreference.com/stddate/strftime.html
var future := 100000;
print(StrFormatTime( "%Y %m %d %H %M %S", (POLCore().systime + future) ));
output 2018 07 12 05 44 35