Mercurial Hosting > luan
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 |