summaryrefslogtreecommitdiffstats
path: root/lib/date.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2009-12-31 14:27:23 +0000
committerTed Trask <ttrask01@yahoo.com>2009-12-31 14:27:23 +0000
commit9f469a06780e66135cb3da9cfdedb48763931160 (patch)
treeddcb6f2375c81e90f276f31aa880b2654092603d /lib/date.lua
parentbe4063286a0b8f46754c082178517b3c684c3dff (diff)
downloadacf-core-9f469a06780e66135cb3da9cfdedb48763931160.tar.bz2
acf-core-9f469a06780e66135cb3da9cfdedb48763931160.tar.xz
Moved non-ACF-specific libraries to acf-lib package, moved cfe_unpack function to viewfunctions library.
Diffstat (limited to 'lib/date.lua')
-rw-r--r--lib/date.lua328
1 files changed, 0 insertions, 328 deletions
diff --git a/lib/date.lua b/lib/date.lua
deleted file mode 100644
index 09592fc..0000000
--- a/lib/date.lua
+++ /dev/null
@@ -1,328 +0,0 @@
---date and time functions
-
-module(..., package.seeall)
-
-require("posix")
-require("format")
-require("fs")
-
---global for date formating see below for more information
---Mon Nov 26 19:56:10 UTC 2007 looks like most systems use this
---print(os.date(date.format))
-formats = "%a %b %d %X %Z %Y"
-
-months ={ {"January","Jan"},
- {"February", "Feb"},
- {"March","Mar"},
- {"April", "Apr"},
- {"May","May"},
- {"June","Jun"},
- {"July","Jul"},
- {"August","Aug"},
- {"September","Sep"},
- {"October","Oct"},
- {"November","Nov"},
- {"December","Dec"}
- }
-
-revmonths = {["january"] = 1, ["jan"] = 1,
- ["february"] = 2, ["feb"] = 2,
- ["march"] = 3, ["mar"] = 3,
- ["april"] = 4, ["apr"] = 4,
- ["may"] = 5,
- ["june"] = 6, ["jun"] = 6,
- ["july"] = 7, ["jul"] = 7,
- ["august"] = 8, ["aug"] = 8,
- ["september"] = 9, ["sep"] = 9,
- ["october"] = 10, ["oct"] = 10,
- ["november"] = 11, ["nov"] = 11,
- ["december"] = 12, ["dec"] = 12
- }
-
-dow = { {"Sunday","Sun"},
- {"Monday","Mon"},
- {"Tuesday","Tue"},
- {"Wednesday","Wed"},
- {"Thursday","Thu"},
- {"Friday","Fri"},
- {"Saturday","Sat"}
- }
-
-revdow = { ["sunday"] = 1, ["sun"] = 2,
- ["monday"] = 2, ["mon"] = 2,
- ["tuesday"] = 3, ["tue"] = 3,
- ["wednesday"] = 4, ["wed"] = 4,
- ["thursday"] = 5, ["thu"] = 5,
- ["friday"] = 6, ["fri"] = 6,
- ["saturday"] = 7, ["sat"] =7
- }
-
--- + usually denotes right of PM and - means left. It seems that /etc/TZ needs these
---reversed for alpine/busybox. difference in col 2 and 5
---this list is not full. May need some more added. No Africa or Asia
---Abrr TZ,Real Offset, FullName, Location, What would be put in /etc/TZ(busybox needed offset)
-
-timezones = {
-
-{"A","+1","Alpha Time Zone","Military","Alpha-1"},
-{"ACDT","+10:30","Australian Central Daylight Time","Australia","ACDT-10:30"},
-{"ACST","+9:30","Australian Central Standard Time","Australia","ACST-9:30"},
-{"ADT","-3","Atlantic Daylight Time","North America","ADT+3"},
-{"AEDT","+11","Australian Eastern Daylight Time","Australia","AEDT-11"},
-{"AEST","+10","Australian Eastern Standard Time","Australia","AEST-10"},
-{"AKDT","-8","Alaska Daylight Time","North America","AKDT+8"},
-{"AKST","-9","Alaska Standard Time","North America","AKST+9"},
-{"AST","-4","Atlantic Standard Time","North America","AST+4"},
-{"AWDT","+9","Australian Western Daylight Time","Australia","AWDT-9"},
-{"AWST","+8","Australian Western Standard Time","Australia","AWST-8"},
-
-{"B","+2","Bravo Time Zone","Military","Bravo-2"},
-{"BST","+1","British Summer Time","Europe","BST-1"},
-
-{"C","+3","Charlie Time Zone","Military","Charlie-3"},
-{"CDT","-5","Central Daylight Time","North America","CDT+5"},
-{"CEDT","+2","Central European Daylight Time","Europe","CEDT-2"},
-{"CEST","+2","Central European Summer Time","Europe","CEST-2"},
-{"CET","+1","Central European Time","Europe","CET-1"},
-{"CST","+10:30","Central Summer(Daylight) Time","Australia","CST-10:30"},
-{"CST","+9:30","Central Standard Time","Australia","CST-9:30"},
-{"CST","-6","Central Standard Time","North America","CST+6"},
-{"CXT","+7","Christmas Island Time","Australia","CXT-7"},
-
-{"D","+4","Delta Time Zone","Military","Delta-4"},
-
-{"E","+5","Echo Time Zone","Military","Echo-5"},
-{"EDT","-4","Eastern Daylight Time","North America","EDT+4"},
-{"EEDT","+3","Eastern European Daylight Time","Europe","EEDT-3"},
-{"EEST","+3","Eastern European Summer Time","Europe","EEST-3"},
-{"EET","+2","Eastern European Time","Europe","EET-2"},
-{"EST","+11","Eastern Summer(Daylight) Time","Australia","EST-11"},
-{"EST","+10","Eastern Standard Time","Australia","EST-10"},
-{"EST","-5","Eastern Standard Time","North America","EST+5"},
-
-{"F","+6","Foxtrot Time Zone","Military","Foxtrot-6"},
-
-{"G","+7","Golf Time Zone","Military","Golf-7"},
-{"GMT","+0","Greenwich Mean Time","Europe","GMT+0"},
-
-{"H","+8","Hotel Time Zone","Military","Hotel-8"},
-{"HAA","-3","Heure Avancée de l'Atlantique","North America","HAA+3"},
-{"HAC","-5","Heure Avancée du Centre","North America","HAC+5"},
-{"HADT","-9","Hawaii-Aleutian Daylight Time","North America","HADT+9"},
-{"HAE","-4","Heure Avancée de l'Est","North America","HAE+4"},
-{"HAP","-7","Heure Avancée du Pacifique","North America","HAP+7"},
-{"HAR","-6","Heure Avancée des Rocheuses","North America","HAR+6"},
-{"HAST","-10","Hawaii-Aleutian Standard Time","North America","HAST+10"},
-{"HAT","-2:30","Heure Avancée de Terre-Neuve","North America","HAT+2:30"},
-{"HAY","-8","Heure Avancée du Yukon","North America","HAY+8"},
-{"HNA","-4","Heure Normale de l'Atlantique","North America","HNA+4"},
-{"HNC","-6","Heure Normale du Centre","North America","HNC+6"},
-{"HNE","-5","Heure Normale de l'Est","North America","HNE+5"},
-{"HNP","-8","Heure Normale du Pacifique","North America","HNP+8"},
-{"HNR","-7","Heure Normale des Rocheuses","North America","HNR+7"},
-{"HNT","-3:30","Heure Normale de Terre-Neuve","North America","HNT+3:30"},
-{"HNY","-9","Heure Normale du Yukon","North America","HNY+9"},
-
-{"I","+9","India Time Zone","Military","India-9"},
-{"IST","+1","Irish Summer Time","Europe","IST-1"},
-
-{"K","+10","Kilo Time Zone","Military","Kilo-10"},
-
-{"L","+11","Lima Time Zone","Military","Lima-11"},
-
-{"M","+12","Mike Time Zone","Military","Mike-12"},
-{"MDT","-6","Mountain Daylight Time","North America","MDT+6"},
-{"MESZ","+2","Mitteleuroäische Sommerzeit","Europe","MESZ-2"},
-{"MEZ","+1","Mitteleuropäische Zeit","Europe","MEZ-1"},
-{"MST","-7","Mountain Standard Time","North America","MST+7"},
-
-{"N","-1","November Time Zone","Military","November+1"},
-{"NDT","-2:30","Newfoundland Daylight Time","North America","NDT+2:30"},
-{"NFT","+11:30","Norfolk (Island) Time","Australia","NFT-11:30"},
-{"NST","-3:30","Newfoundland Standard Time","North America","NST+3:30"},
-
-{"O","-2","Oscar Time Zone","Military","Oscar+2"},
-
-{"P","-3","Papa Time Zone","Military","Papa+3"},
-{"PDT","-7","Pacific Daylight Time","North America","PDT+7"},
-{"PST","-8","Pacific Standard Time","North America","PST+8"},
-
-{"Q","-4","Quebec Time Zone","Military","Quebec+4"},
-
-{"R","-5","Romeo Time Zone","Military","Romeo+5"},
-
-{"S","-6","Sierra Time Zone","Military","Sierra+6"},
-
-{"T","-7","Tango Time Zone","Military","Tango+7"},
-
-{"U","-8","Uniform Time Zone","Military","Uniform+8"},
-{"UTC","+0","Coordinated Universal Time","Europe","UTC+0"},
-
-{"V","-9","Victor Time Zone","Military","Victor+9"},
-
-{"W","-10","Whiskey Time Zone","Military","Whiskey+10"},
-{"WEDT","+1","Western European Daylight Time","Europe","WEDT-1"},
-{"WEST","+1","Western European Summer Time","Europe","WEST-1"},
-{"WET","+0","Western European Time","Europe","WET+0"},
-{"WST","+9","Western Summer(Daylight) Time","Australia","WST-9"},
-{"WST","+8","Western Standard Time","Australia","WST-8"},
-
-{"X","-11","X-ray Time Zone","Military","X-ray+11"},
-
-{"Y","-12","Yankee Time Zone","Military","Yankee+12"},
-
-{"Z","+0","Zulu Time Zone","Military","Zulu+0"}
-
-}
-
---os.time() will give seconds since 1970-epoch
---os.date() will give formated time strings
---os.time{year=2007,month=1,day=1,hour=2,min=1,sec=1}
---os.date(date.format,os.time())
-
---give me a table
---t = { {year=2007,month=1,day=2,hour=2}, {year=2006,month=1,day=5} }
---will return a table sorted by oldest <-> newest
---to grab the largest and smallest a,b=g[1],g[table.maxn(g)]
-function date_to_seconds (t)
- g = {}
- count = table.maxn(t)
- for i = 1,count do
- g[#g+1] = os.time(t[i])
- end
- table.sort(g)
- return g
-end
-
--- the reverse of date_to_seconds. expecting a table of seconds
---format can be changed. This seems to be standard, dow,mon,dom,time,zone,year
--- seems like %z- +0000 time zone format and %Z- 3 letter timezone undocumented or new
-
-function seconds_to_date (t)
- g = {}
- count = table.maxn(t)
- for i = 1,count do
- g[#g+1] = os.date(formats,t[i])
- end
-
- return g
-end
-
---Wed Nov 28 14:01:23 UTC 2007
---os.date(date.formats) put into a table
---year,month,day,hour,min,sec,isdst- may need a dst table to set this automatically
-function string_to_table (str)
- if str == nil then str = os.date(formats) end
- g = {}
- temp = format.string_to_table(str,"%s")
- month = abr_month_num(temp[2])
- g["month"] = month
- day = temp[3]
- g["day"] = day
- --may do something with this if have a tz table ??
- tz = temp[5]
- year = temp[6]
- g["year"] = year
- temp2 = format.string_to_table(temp[4],":")
- hour = temp2[1]
- g["hour"] = hour
- min = temp2[2]
- g["min"] = min
- sec = temp2[3]
- g["sec"] = sec
- return g
-
-end
-
-
---give dates in seconds and gives the difference in years,months,days,...
---gives a table back with hour,min,month,sec,day,year to display something like
---you have 10 years, 14 hours, 10 days to renew you certificate
--- in secs - year, day, hour,min,sec
-t_time = { field_names = {"years","days","hours","minutes","seconds"},
- 31556926,86400,3600,60,1
- }
-
-function date_diff (d1, d2)
- g = {}
- if d2 == nil then d2 = os.time() end
- --first sum of seconds
- sum = math.abs(os.difftime(d1,d2))
- --going to go through and get it smaller with each pass through the table
- for a,b in ipairs(t_time) do
- print(sum)
- hold = math.modf(sum/b)
- g[t_time.field_names[a]] = hold
- sum = (sum - (hold*b))
- end
-
- return g
-end
-
---give a search number and return the month name
-
-function num_month_name (search)
- return months[search][1]
-end
-
---give a search number and return the month abr
-
-function num_month_name_abr (search)
- return months[search][2]
-end
-
-function name_month_num (search)
- return revmonths[string.lower(search)]
-end
-
-function abr_month_num (search)
- return revmonths[string.lower(search)]
-end
-
-function num_dow_name (search)
- return dow[search][1]
-end
-
-function num_dow_name_abr (search)
- return dow[search][2]
-end
-
-function name_dow_num (search)
- return revdow[string.lower(search)]
-end
-
-function abr_dow_num (search)
- return revdow[string.lower(search)]
-end
-
---tell me what TimeZone my system is set to
-
-function what_tz ()
- f = fs.read_file_as_array("/etc/TZ") or {}
- local tz = f[1]
- return tz
-end
-
---change the timezone my system is set to
-
-function change_tz ( tz )
- --give us something like CET-1, this is busy box offset need to fix.
-
- tz = string.gsub(tz, "%+", "%%+")
- tz = string.gsub(tz, "%-", "%%-")
- tz = "^" .. tz .. "$"
- result = {}
- for a=1,table.maxn(date.timezones) do
- c = string.match(date.timezones[a][5], tz)
- if c ~= nil then result[#result +1] = c end
- end
-
- if table.maxn(result) == 1 then
- fs.write_file("/etc/TZ", result[1])
- mess = "Success"
- else
- mess = "Too many matches."
- end
-
- return mess,date.what_tz()
-end