comparison src/luan/modules/Time.luan @ 775:1a68fc55a80c

simplify dir structure
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 14:36:40 -0600
parents core/src/luan/modules/Time.luan@a82d385ec2c3
children 53e77f60b789
comparison
equal deleted inserted replaced
774:3e30cf310e56 775:1a68fc55a80c
1 -- incomplete, will add as needed
2
3 java()
4 local Luan = require "luan:Luan.luan"
5 local error = Luan.error
6 local ipairs = Luan.ipairs or error()
7 local Table = require "luan:Table.luan"
8 local System = require "java:java.lang.System"
9 local Calendar = require "java:java.util.Calendar"
10 local Date = require "java:java.util.Date"
11 local TimeZone = require "java:java.util.TimeZone"
12 local SimpleDateFormat = require "java:java.text.SimpleDateFormat"
13
14 local M = {}
15
16 function M.now()
17 return System.currentTimeMillis()
18 end
19
20 -- add more as needed
21 local fields = {
22 year = Calendar.YEAR;
23 month = Calendar.MONTH;
24 day_of_month = Calendar.DAY_OF_MONTH;
25 }
26
27 function M.get( time, ... )
28 local cal = Calendar.getInstance()
29 cal.setTimeInMillis(time)
30 local rtn = {}
31 for i, v in ipairs{...} do
32 local fld = fields[v.lower()]
33 fld or error("invalid field: "+v)
34 local n = cal.get(fld)
35 if fld == "month" then
36 n = n + 1
37 end
38 rtn[i] = n
39 end
40 return Table.unpack(rtn)
41 end
42
43 function M.format(time,pattern)
44 pattern = pattern or "yyyy-MM-dd HH:mm:ss"
45 return SimpleDateFormat.new(pattern).format(Date.new(time))
46 end
47
48 function M.on( year, month, day, hour, minute, second, millis )
49 month = month - 1
50 local cal = Calendar.getInstance()
51 cal.setLenient(false)
52 cal.set( year, month, day, hour or 0, minute or 0, second or 0 )
53 cal.set( Calendar.MILLISECOND, millis or 0 )
54 return cal.getTimeInMillis()
55 end
56
57 function M.period( t )
58 local cal = Calendar.getInstance()
59 cal.setTimeZone(TimeZone.getTimeZone("GMT"))
60 local days = t.days or 0
61 days = days + 1
62 cal.set( 1970, 0, days, t.hours or 0, t.minutes or 0, t.seconds or 0 )
63 cal.set( Calendar.MILLISECOND, t.millis or 0 )
64 return cal.getTimeInMillis()
65 end
66
67 function M.parse( pattern, source )
68 return SimpleDateFormat.new(pattern).parse(source).getTime()
69 end
70
71 return M