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