Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/luan/modules/Time.luan Fri Aug 26 14:36:40 2016 -0600 @@ -0,0 +1,71 @@ +-- incomplete, will add as needed + +java() +local Luan = require "luan:Luan.luan" +local error = Luan.error +local ipairs = Luan.ipairs or error() +local Table = require "luan:Table.luan" +local System = require "java:java.lang.System" +local Calendar = require "java:java.util.Calendar" +local Date = require "java:java.util.Date" +local TimeZone = require "java:java.util.TimeZone" +local SimpleDateFormat = require "java:java.text.SimpleDateFormat" + +local M = {} + +function M.now() + return System.currentTimeMillis() +end + +-- add more as needed +local fields = { + year = Calendar.YEAR; + month = Calendar.MONTH; + day_of_month = Calendar.DAY_OF_MONTH; +} + +function M.get( time, ... ) + local cal = Calendar.getInstance() + cal.setTimeInMillis(time) + local rtn = {} + for i, v in ipairs{...} do + local fld = fields[v.lower()] + fld or error("invalid field: "+v) + local n = cal.get(fld) + if fld == "month" then + n = n + 1 + end + rtn[i] = n + end + return Table.unpack(rtn) +end + +function M.format(time,pattern) + pattern = pattern or "yyyy-MM-dd HH:mm:ss" + return SimpleDateFormat.new(pattern).format(Date.new(time)) +end + +function M.on( year, month, day, hour, minute, second, millis ) + month = month - 1 + local cal = Calendar.getInstance() + cal.setLenient(false) + cal.set( year, month, day, hour or 0, minute or 0, second or 0 ) + cal.set( Calendar.MILLISECOND, millis or 0 ) + return cal.getTimeInMillis() +end + +function M.period( t ) + local cal = Calendar.getInstance() + cal.setTimeZone(TimeZone.getTimeZone("GMT")) + local days = t.days or 0 + days = days + 1 + cal.set( 1970, 0, days, t.hours or 0, t.minutes or 0, t.seconds or 0 ) + cal.set( Calendar.MILLISECOND, t.millis or 0 ) + return cal.getTimeInMillis() +end + +function M.parse( pattern, source ) + return SimpleDateFormat.new(pattern).parse(source).getTime() +end + +return M