Mercurial Hosting > luan
comparison src/luan/modules/Time.luan @ 1079:53e77f60b789
add Time.count
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 10 Nov 2016 21:15:28 -0700 |
parents | 1a68fc55a80c |
children | aa967fd73b80 |
comparison
equal
deleted
inserted
replaced
1078:99f1c125926f | 1079:53e77f60b789 |
---|---|
2 | 2 |
3 java() | 3 java() |
4 local Luan = require "luan:Luan.luan" | 4 local Luan = require "luan:Luan.luan" |
5 local error = Luan.error | 5 local error = Luan.error |
6 local ipairs = Luan.ipairs or error() | 6 local ipairs = Luan.ipairs or error() |
7 local Math = require "luan:Math.luan" | |
8 local floor = Math.floor or error() | |
7 local Table = require "luan:Table.luan" | 9 local Table = require "luan:Table.luan" |
8 local System = require "java:java.lang.System" | 10 local System = require "java:java.lang.System" |
9 local Calendar = require "java:java.util.Calendar" | 11 local Calendar = require "java:java.util.Calendar" |
10 local Date = require "java:java.util.Date" | 12 local Date = require "java:java.util.Date" |
11 local TimeZone = require "java:java.util.TimeZone" | 13 local TimeZone = require "java:java.util.TimeZone" |
27 function M.get( time, ... ) | 29 function M.get( time, ... ) |
28 local cal = Calendar.getInstance() | 30 local cal = Calendar.getInstance() |
29 cal.setTimeInMillis(time) | 31 cal.setTimeInMillis(time) |
30 local rtn = {} | 32 local rtn = {} |
31 for i, v in ipairs{...} do | 33 for i, v in ipairs{...} do |
32 local fld = fields[v.lower()] | 34 local fld = fields[v] |
33 fld or error("invalid field: "+v) | 35 fld or error("invalid field: "..v) |
34 local n = cal.get(fld) | 36 local n = cal.get(fld) |
35 if fld == "month" then | 37 if fld == "month" then |
36 n = n + 1 | 38 n = n + 1 |
37 end | 39 end |
38 rtn[i] = n | 40 rtn[i] = n |
66 | 68 |
67 function M.parse( pattern, source ) | 69 function M.parse( pattern, source ) |
68 return SimpleDateFormat.new(pattern).parse(source).getTime() | 70 return SimpleDateFormat.new(pattern).parse(source).getTime() |
69 end | 71 end |
70 | 72 |
73 | |
74 local count_times = { | |
75 days = M.period{days=1} | |
76 hours = M.period{hours=1} | |
77 minutes = M.period{minutes=1} | |
78 seconds = M.period{seconds=1} | |
79 } | |
80 | |
81 function M.count( time, ... ) | |
82 local cal = Calendar.getInstance() | |
83 cal.setTimeInMillis(time) | |
84 local rtn = {} | |
85 for i, v in ipairs{...} do | |
86 local t = count_times[v] | |
87 t or error("invalid field: "..v) | |
88 rtn[#rtn+1] = floor(time/t) | |
89 time = time%t | |
90 end | |
91 rtn[#rtn+1] = time | |
92 return Table.unpack(rtn) | |
93 end | |
94 | |
95 | |
71 return M | 96 return M |