[READ-ONLY] Mirror of https://github.com/thoda-dev/DualUniverse. DualUniverse scripts
0

Configure Feed

Select the types of activity you want to include in your feed.

Update TimeScript.lua

authored by

Thomas and committed by
GitHub
(Apr 28, 2022, 7:00 PM +0200) 66954c64 d1686c91

+48 -84
+48 -84
TimeScript/TimeScript.lua
··· 4 4 https://github.com/Jericho1060/DualUniverse/edit/master/TimeScript/TimeScript.lua 5 5 ]]-- 6 6 7 - summer_time = false --export 8 - 9 - function DUCurrentDateTime() 10 - local time = system.getTime() 11 - local additionnal_hour = 0 12 - local seconds_to_2018 = 7948800 --from 01-10-2017 (arkship time) 13 - local secondsInMinute = 60 14 - local secondsInHour = secondsInMinute * 60 15 - local secondsInDay = secondsInHour * 24 16 - local secondsInYear = secondsInDay * 365 17 - local weekDaysNames = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"} 18 - local weekDaysShortNames = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"} 19 - local monthNames = {"January", "Febuary", "March", "April", "May", "June", "July", "August", "Septrember", "October", "Novermber", "December"} 20 - local monthShortNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 21 - if summer_time then time = time + secondsInHour end 22 - time = time - seconds_to_2018 23 - local weekDayIndex = math.floor(time/secondsInDay)%7 24 - if weekDayIndex == 0 then weekDayIndex = 7 end 25 - local year = 2018 26 - local month = 1 27 - local day = 1 28 - local daysInFebuary = 28 29 - while time >= secondsInYear do 30 - if (year % 4) == 0 then --leap year 31 - if time >= (secondsInYear - secondsInDay) then 32 - year = year + 1 33 - time = time - secondsInYear - secondsInDay 7 + function DUCurrentDateTime(utc) 8 + local t = system.getUtcTime() 9 + if not utc then t = t + system.getUtcOffset() end 10 + local DSEC=24*60*60 11 + local YSEC=365*DSEC 12 + local LSEC=YSEC+DSEC 13 + local FSEC=4*YSEC+DSEC 14 + local BASE_DOW=4 15 + local BASE_YEAR=1970 16 + local _days={-1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364} 17 + local _lpdays={} 18 + for i=1,2 do _lpdays[i]=_days[i] end 19 + for i=3,13 do _lpdays[i]=_days[i]+1 end 20 + local y,j,m,d,w,h,n,s 21 + local mdays=_days 22 + s=t 23 + y=math.floor(s/FSEC) 24 + s=s-y*FSEC 25 + y=y*4+BASE_YEAR 26 + if s>=YSEC then 27 + y=y+1 28 + s=s-YSEC 29 + if s>=YSEC then 30 + y=y+1 31 + s=s-YSEC 32 + if s>=LSEC then 33 + y=y+1 34 + s=s-LSEC 34 35 else 35 - local daysInFebuary = 29 36 - break 36 + mdays=_lpdays 37 37 end 38 - else 39 - year = year + 1 40 - time = time - secondsInYear 41 38 end 42 39 end 43 - local daysFromYearStart = math.floor(time/secondsInDay) 44 - if daysFromYearStart >= 31 then 45 - month = 2 46 - daysFromYearStart = daysFromYearStart - 31 47 - end 48 - if daysFromYearStart >= daysInFebuary then 49 - month = 3 50 - daysFromYearStart = daysFromYearStart - daysInFebuary 51 - end 52 - if daysFromYearStart >= 31 then 53 - month = 4 54 - daysFromYearStart = daysFromYearStart - 31 55 - end 56 - if daysFromYearStart >= 30 then 57 - month = 5 58 - daysFromYearStart = daysFromYearStart - 30 59 - end 60 - if daysFromYearStart >= 31 then 61 - month = 6 62 - daysFromYearStart = daysFromYearStart - 31 63 - end 64 - if daysFromYearStart >= 30 then 65 - month = 7 66 - daysFromYearStart = daysFromYearStart - 30 67 - end 68 - if daysFromYearStart >= 31 then 69 - month = 8 70 - daysFromYearStart = daysFromYearStart - 31 71 - end 72 - if daysFromYearStart >= 31 then 73 - month = 9 74 - daysFromYearStart = daysFromYearStart - 31 75 - end 76 - if daysFromYearStart >= 30 then 77 - month = 10 78 - daysFromYearStart = daysFromYearStart - 30 79 - end 80 - if daysFromYearStart >= 31 then 81 - month = 11 82 - daysFromYearStart = daysFromYearStart - 31 83 - end 84 - if daysFromYearStart >= 30 then 85 - month = 12 86 - daysFromYearStart = daysFromYearStart - 30 87 - end 88 - day = daysFromYearStart 89 - time = time % secondsInDay 90 - local h = math.floor(time/secondsInHour)%24 91 - local m = math.floor(time%secondsInHour/60) 92 - local s = math.floor(time%60) 93 - return year, month, day, h, m, s, weekDayIndex, weekDaysNames[weekDayIndex], weekDaysShortNames[weekDayIndex], monthNames[month], monthShortNames[month] 40 + j=math.floor(s/DSEC) 41 + s=s-j*DSEC 42 + local m=1 43 + while mdays[m]<j do m=m+1 end 44 + m=m-1 45 + local d=j-mdays[m] 46 + w=(math.floor(t/DSEC)+BASE_DOW)%7 47 + if w == 0 then w = 7 end 48 + h=math.floor(s/3600) 49 + s=s-h*3600 50 + n=math.floor(s/60) 51 + function round(a,b)if b then return utils.round(a/b)*b end;return a>=0 and math.floor(a+0.5)or math.ceil(a-0.5)end 52 + s=round(s-n*60) 53 + local weekDaysNames = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"} 54 + local weekDaysShortNames = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"} 55 + local monthNames = {"January", "Febuary", "March", "April", "May", "June", "July", "August", "Septrember", "October", "Novermber", "December"} 56 + local monthShortNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 57 + return y,m,d,h,n,s,w,weekDaysNames[w],weekDaysShortNames[w],monthNames[m],monthShortNames[m],j+1 94 58 end 95 59 96 60 --[[ 97 - local year, month, day, hour, minute, second, weekDayIndex, weekDayName, weekDayShortName, monthName, monthShortName = DUCurrentDateTime() 61 + local year, month, day, hour, minute, second, weekDayIndex, weekDayName, weekDayShortName, monthName, monthShortName, daysFromYearStart = DUCurrentDateTime() 98 62 system.print(string.format("%02d/%02d/%04d %02d:%02d:%02d",day,month,year,hour,minute,second)) 99 63 ]]