mirror of
https://codeberg.org/TicklishHoneyBee/CLIte.git
synced 2026-03-11 09:04:37 +00:00
89 lines
2.3 KiB
JavaScript
89 lines
2.3 KiB
JavaScript
clite.libs.data = function() {
|
|
|
|
clite.libs.load('libtime','time',function(io,env) {
|
|
var data = {
|
|
days:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
|
|
months:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
|
|
mdays:[31,28,31,30,31,30,31,31,30,31,30,31]
|
|
}
|
|
function getyDay(mon,mday,year) {
|
|
var yday = 0;
|
|
for (var i = 0; i<mon; i++) {
|
|
yday += data.mdays[i];
|
|
}
|
|
year += 1900;
|
|
// plus one for a leap year
|
|
if (yday > 59 && (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)))
|
|
yday++;
|
|
return yday+mday;
|
|
}
|
|
function readTime() {
|
|
var fd = clite.io.open(io.pid,'/dev/time',clite.io.flags.O_RDONLY|clite.io.flags.O_SYNC);
|
|
if (!fd)
|
|
return 0;
|
|
var t = clite.io.readAll(io.pid,fd);
|
|
if (!t) {
|
|
t = '0';
|
|
}else{
|
|
t = t.toString();
|
|
}
|
|
clite.io.close(io.pid,fd);
|
|
return parseInt(t,10);
|
|
}
|
|
function genTime(time,tz) {
|
|
var t = time+tz;
|
|
var tm = Object.create({
|
|
tm_sec:0, // seconds (0-60)
|
|
tm_min:0, // minutes (0-59)
|
|
tm_hour:0, // hour (0-23)
|
|
tm_mday:0, // day of month (0-31)
|
|
tm_mon:0, // month of year (0-11)
|
|
tm_year:0, // years since 1900
|
|
tm_wday:0, // day of week (0-6, sunday = 0)
|
|
tm_yday:0, // day of year (0-365)
|
|
tm_isdst:0 // 1 if daylight savings
|
|
});
|
|
|
|
var td = new Date(t*1000);
|
|
|
|
tm.tm_sec = td.getUTCSeconds();
|
|
tm.tm_min = td.getUTCMinutes();
|
|
tm.tm_hour = td.getUTCHours();
|
|
tm.tm_mday = td.getUTCDate();
|
|
tm.tm_mon = td.getUTCMonth();
|
|
tm.tm_year = td.getUTCFullYear()-1900;
|
|
tm.tm_wday = td.getUTCDay();
|
|
tm.tm_yday = getyDay(tm.tm_mon,tm.tm_mday,tm.tm_year);
|
|
|
|
return tm;
|
|
}
|
|
|
|
//
|
|
|
|
return Object.create({
|
|
|
|
asctime:function(timeptr) {
|
|
return data.days[timeptr.tm_wday]+' '+data.months[timeptr.tm_mon]+' '+timeptr.tm_mday+' '+timeptr.tm_hour+':'+timeptr.tm_min+':'+timeptr.tm_sec+' '+(1900+timeptr.tm_year)+'\n';
|
|
},
|
|
gmtime:function(time) {
|
|
return genTime(time,0);
|
|
},
|
|
localtime:function(time) {
|
|
// TODO: fill in tz with seconds offset for current timezone
|
|
var tz = 0;
|
|
return genTime(time,tz);
|
|
},
|
|
mktime:function(timeptr) {
|
|
var t = data.days[timeptr.tm_wday]+' '+data.months[timeptr.tm_mon]+' '+timeptr.tm_mday+' '+timeptr.tm_hour+':'+timeptr.tm_min+':'+timeptr.tm_sec+' '+(1900+timeptr.tm_year);
|
|
return (new Date(t)).getTime();
|
|
},
|
|
time:function() {
|
|
var t = readTime();
|
|
return Math.floor(t/1000.0); // convert from milliseconds to seconds
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|