关于lua中显示绝对时间和相对时间

时间:2022-10-13 22:09:36

最近做公司项目需要把服务器传过来的毫秒数转换为绝对时间如 2016年4月6日09:55:45

或者相对时间1年3个月\3个月15天\15天11小时\11小时13分


绝对时间直接用lua os库

-- 时间转换
local function transformationDate(ms)
	local date = os.date("*t", ms / 1000)
	return string.format("%d年%d月%d日 %d时%d分%d秒", date.year, date.month, date.day, date.hour, date.min, date.sec)
end


print(transformationDate(485182870))


相对时间自己写的函数 略复杂

有能力的朋友 可以自己精简

-- 该函数单位上线为天 最大以天为单位 最小返回0秒 最多只显示2个单位 如果显示 1天 1分钟 只显示1天 中间单位会被抛弃
function getValidTime(millisecond)	-- 参数毫秒
	local second = millisecond / 1000			-- 转化为秒

	local minute = nil							-- 分钟
	local hour = nil							-- 小时
	local overhead = nil						-- 天

	if second and (second / 60) >= 1 then
		minute = math.floor(second / 60)
	else
		minute = nil
	end
	
	if minute and (minute / 60) >= 1 then
		hour = math.floor(minute / 60)
	else
		hour = nil
	end
	
	if hour and (hour / 24) >= 1 then
		overhead = math.floor(hour / 24)
	else
		overhead = nil
	end

--做特殊处理
	if second >= 60 then
		second = second % 60
	end
	if overhead then
		hour = hour % 24
		minute = minute % 60
	elseif hour then
		minute = minute % 60
	end


	local result = ""
	if overhead then
		if hour ~= 0 then
			result = overhead .. "天" .. hour .. "小时"
		else
			result = overhead .. "天"
		end
	elseif hour then
		if minute ~= 0 then
			result = hour .. "小时" .. minute .. "分钟"
		else
			result = hour .. "小时"
		end
	elseif minute then
		if second ~= 0 then
			result = minute .. "分钟" .. second .. "秒"		-- 这里不需要用秒做单位
		else
			result = minute .. "分钟"
		end
	else
		result = second .. "秒"
	end

	return result
end