Mercurial Hosting > luan
view core/src/luan/modules/Time.luan @ 615:abc3198c86dd
fix tail recursion bug;
add Hosting.exists();
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 17 Dec 2015 01:53:48 -0700 |
parents | b4f3dbe1c6e3 |
children | ca169567ce07 |
line wrap: on
line source
-- incomplete, will add as needed java() local Luan = require "luan:Luan" local error = Luan.error local ipairs = Luan.ipairs or error() local Table = require "luan:Table" 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( days, hours, minutes, seconds, millis ) local cal = Calendar.getInstance() cal.setTimeZone(TimeZone.getTimeZone("GMT")) days = days + 1 cal.set( 1970, 0, days, hours or 0, minutes or 0, seconds or 0 ) cal.set( Calendar.MILLISECOND, millis or 0 ) return cal.getTimeInMillis() end function M.parse( pattern, source ) return SimpleDateFormat.new(pattern).parse(source).getTime() end return M