编辑“
模块:Time
”
跳到导航
跳到搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
local module = {} local getArgs = require('Module:Arguments').getArgs local tzbiou = 0 -- 特殊时期是否避开某些容易令人误会的色块 local winterDays = require('Module:冬至日期').winterDays local winterSeconds = require('Module:冬至日期').winterSeconds local winterLength = 23000 local firstWinter = 7322 -- 作为历元的冬至在上述数值的第7322号位 local rainbow = {"#f4592d", "#eda667", "#faf03e", "#5fb319", "#8eede2", "#0568e3","#49207c","#aa10aa"} -- 七元素的色号,赤橙黄绿青蓝紫,第八个是闰契的品红色 local tick = {18, 7, 23, 47, 10, 31, 16, 17, 12, 21, 34, 43, 37, 2, 13, 9, 36, 14, 4, 45, 27, 20, 39, 41, 24, 42, 19, 44, 32, 11, 26, 25, 30, 28, 8, 48, 5, 40, 29, 33, 6, 35, 38, 46, 15, 22, 3, 1} local gua = {"火", "祭祀", "对手", "成败", "反叛", "救赎", "爆发", "欲望", "木", "创造", "新生", "凋谢", "重生", "弥散", "自我", "寻找", "存在", "经典", "革新", "梦幻", "倾听", "忍耐", "腐朽", "绝笔", "地", "孤独", "小人", "永恒", "恶魔", "盛开", "理解", "泥土", "风", "雾气", "神", "对抗", "绽放", "思考", "同伴", "变幻", "水", "隐退", "超越", "生命", "表达", "破碎", "时间", "朦胧", "自然"} function module.s2d(frame) -- 秒转天,除以86400 local args = getArgs(frame) local x = tonumber(args[1]) return string.format("%.10f",x/86400) end function module.test() local now=os.time() local start=os.time({year=2021,month=9,day=1,hour=3}) local days=(now-start)/86400 local dayint=math.floor(days) local hours=((now-start)%86400)/3600 return dayint..'天'..hours..'小时' end function module.directly() -- 直接获得当前时间 return os.date('%p')..' '..os.date('%c') end -- 为方便起见,这里事实上是用补码,即数值 6 5 4 3 2 1 0 指代火木光土风水空。 function sunColor(inp) -- 太阳易双色显示,范围0-48,使用补码6543210 local l = inp % 7 -- 下卦 local u = math.floor(inp/7+0.125) % 7 -- 上卦 if (l==4 and u==1 and tzbiou==1) then return ' ' else return '<span style="background:-webkit-linear-gradient(90deg, '..rainbow[7-l]..' 0%, '..rainbow[7-l]..' 50%, '..rainbow[7-u]..' 50%, '..rainbow[7-u]..' 100%)"> </span>' end end function sunColor2(inp) -- 太阳易双色显示,范围1-49,使用原码1234567 local l = inp % 7 -- 下卦 local u = math.floor(inp/7+0.125) % 7 + 1 -- 上卦 if (l==0) then l = 7 u = u-1 end if (l==3 and u==6 and tzbiou==1) then return ' ' else return '<span style="background:-webkit-linear-gradient(90deg, '..rainbow[l]..' 0%, '..rainbow[l]..' 50%, '..rainbow[u]..' 50%, '..rainbow[u]..' 100%)"> </span>' end end function cheiColor(inp) -- 八契单色显示 return '<span style="background:'..rainbow[inp]..'"> </span>' end function sun49(inp) return gua[49-(inp%49)] end function queIa(seconds) local spmin = 56 local minph = 35 local hpd = 14 local dpm = 35 local mpy = 14 local s = seconds % spmin local minutes = math.floor((seconds - s) / spmin + 0.5) local mi = minutes % minph local hours = math.floor((minutes - mi) / minph + 0.5) local h = hours % hpd local days = math.floor((hours - h) / hpd + 0.5) local d = days % dpm local d1 = d + 1 local months = math.floor((days - d) / dpm + 0.5) local m = months % mpy local m1 = m + 1 local y = math.floor((months - m) / mpy + 0.5) local y1 = y if (y1 >= 0) then y1 = y1 + 1 end return string.format("%d年%d月%d日 %02d:%02d:%02d", y1, m1, d1, h, mi, s) end function module.nowQueIa(frame) local args = getArgs(frame) local offset = args[1] if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() local start = os.time({year=1900,month=4,day=4,hour=10,min=12,sec=42}) now = now - start if (offset ~= nil) then now = now + offset end return queIa(now) end function module.dateQueIa(frame) local args = getArgs(frame) local y = args[1] local m = args[2] local d = args[3] local h = args[4] local mi = args[5] local s = args[6] local time1 = os.time({year=y,month=m,day=d,hour=h,min=m,sec=s}) local start = os.time({year=1900,month=4,day=4,hour=10,min=12,sec=42}) time1 = time1 - start return queIa(time1) end function module.nowSunTick(frame) local args = getArgs(frame) local color = string.lower(tostring(args[1])) -- 是否显示颜色 local offset = args[2] -- 时间偏移,单位为秒 if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() local start = os.time({year=1996,month=1,day=28,hour=0}) now = now - start if (offset ~= nil) then now = now + offset end local clock = (now-43200) % 86400 -- 一天中的时间,单位为秒,正午为零点 local whichTick = math.floor(clock / 1800) + 1 local c = "" -- 如果显示颜色 if (color == "true") then c = sunColor2(tick[whichTick]) end return c..gua[tick[whichTick]].."时" end function module.nowDuaenn(frame) local args = getArgs(frame) local display = args[1] -- 显示模式 local offset = args[2] -- 时间偏移,单位为秒 if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() local start = os.time({year=1996,month=1,day=28,hour=0}) now = now - start if (offset ~= nil) then now = now + offset end local clock = now % 86400 - 43200 -- 一天中的时间,单位为秒,正午为零点 local duaenn = clock / 400 -- 转化为段 local duint = math.floor(duaenn) -- 段的整数部分 local suennz = (clock - 400 * duint) / 20 -- 舛 local sint = math.floor(suennz) -- 舛的整数部分 local mint = math.floor(clock % 20) -- 秒 local kc = ''; if (string.find(display,'k')~=nil) then kc=' '; end -- 空格与否 if (display==nil) then return duint else if (string.find(display,":")~=nil) then if (string.find(display,"m")~=nil) then return string.format("%+04d%s:%s%02d%s:%s%02d",duint,kc,kc,sint,kc,kc,mint) else return string.format("%+04d%s:%s%02d",duint,kc,kc,sint) end else if (string.find(display,"m")~=nil) then return string.format("%+d%s段%s%02d%s舛%s%02d%s秒",duint,kc,kc,sint,kc,kc,mint,kc) else if (string.find(display,"s")~=nil) then return string.format("%+d%s段%s%02d%s舛",duint,kc,kc,sint,kc) else return string.format("%+d%s段",duint,kc) end end end end end function sunAriCalender(now, color) local start = os.time({year=1996,month=1,day=28,hour=0}) -- 以公历1996年1月28日零时开始算 local days = (now-start) / 86400 local dayint = math.floor(days) local dayfroms = dayint + 1706817 -- 事实上1996年1月28日是太阳易纪元第1,706,817天 local dayFromOne = dayfroms - 49 -- 纪元零点开始过了49天再开始算 local bigCount = math.floor((dayFromOne - 0.5) / 602651) -- 第几个1650年周期(从第0个开始算),1650年周期为602651天 local bigRemain = dayFromOne - 602651 * bigCount local smallCount = math.floor((bigRemain - 0.5) / 4018) -- 第几个11年周期(从第0个开始算),11年周期为4018天 local smallRemain = bigRemain - 4018 * smallCount local smallTotalCheiNum = math.floor((smallRemain + 48.5) / 49) local smallYear = math.floor((smallTotalCheiNum * 11 + 81.5) / 82) local formerCheis = math.floor(((smallYear - 1) * 82 + 0.5) / 11) local dayInYear = smallRemain - formerCheis * 49 local cheiName = {"火","木","光","土","风","水","空","闰"} local cheiN = math.floor((dayInYear + 48.5) / 49) -- 第几契 local dayN = cheiN * 49 - dayInYear local year = bigCount * 1650 + smallCount * 11 + smallYear local dc = "" local cc = "" -- 如果显示颜色 if (color == "true") then dc = sunColor(dayN) cc = cheiColor(cheiN) end return year.."年 "..cc..cheiName[cheiN].."契 "..dc..sun49(dayN).."日" end function sunCalender(now, color, timezone) local start = os.time({year=1996,month=1,day=28,hour=0}) -- 以公历1996年1月28日零时开始算 local days = (now-start) / 86400 local dayint = math.floor(days) local dayfroms = dayint + 1706817 -- 事实上1996年1月28日是太阳易纪元第1,706,817天 local i = 0 local wd = winterDays local ws = winterSeconds local bottom = 9750 -- 只取[bottom,top]区间的冬至年份 local top = bottom + 4095 for i=bottom,top do -- 按时区调整冬至相应日期 if (timezone ~= nil) then ws[i] = ws[i] + timezone end while (ws[i]>=86400) do wd[i] = wd[i] + 1 ws[i] = ws[i] - 86400 end while (ws[i]<0) do wd[i] = wd[i] - 1 ws[i] = ws[i] + 86400 end -- 冬至后(含)第二个自然日,为年末自然日 wd[i] = wd[i] + 97 - (wd[i]-1)%49 end local left = bottom --二分查找,左闭 local right = top + 1 --二分查找,右开 local middle = 0 -- 寻找严格小于dayfroms的最后一个冬至 while (right - left > 1) do middle = math.floor((left+right+0.5)/2) --二分中点,向下取整 if (dayfroms <= wd[middle]) then --比middle所在年的冬至要早,不含middle right = middle else --可能比middle所在年要晚,也有可能正好是这一年 left = middle end end --left即为所求年的下标 local year = left - firstWinter + 1 -- 七历年份 local restdays = dayfroms - wd[left] -- 这一年的具体第几天 local cheiName = {"火","木","光","土","风","水","空","闰"} local cheiN = math.floor((restdays + 48.5) / 49) -- 第几契 local dayN = cheiN * 49 - restdays local dc = "" local cc = "" -- 如果显示颜色 if (color == "true") then dc = sunColor(dayN) cc = cheiColor(cheiN) end return year.."年 "..cc..cheiName[cheiN].."契 "..dc..sun49(dayN).."日" end function sunDay(now, display, color) local start = os.time({year=1996,month=1,day=28,hour=0}) -- 以公历1996年1月28日零时开始算 local days = (now-start) / 86400 local dayint = math.floor(days) local dayfroms = dayint + 1706817 -- 事实上1996年1月28日是太阳易纪元第1,706,817天 local phase = (-dayfroms) % (49*49*49*49) local d = phase % 49 -- 日 local s = math.floor(phase/(49)+0.00000000001) % 49 -- 季 local t = math.floor(phase/(49*49)+0.00000000001) % 49 -- 轮 local p = math.floor(phase/(49*49*49)+0.0000000000001) -- 朝 local dc = "" local sc = "" local tc = "" local pc = "" -- 如果显示颜色 if (color == "true") then dc = sunColor(d) sc = sunColor(s) tc = sunColor(t) pc = sunColor(p) end if (display=='1') then return dc..sun49(d).."日" else if (display=='2') then return sc..sun49(s).."季 "..dc..sun49(d).."日" else if (display=='3') then return tc..sun49(t).."轮 "..sc..sun49(s).."季 "..dc..sun49(d).."日" else return pc..sun49(p).."朝 "..tc..sun49(t).."轮 "..sc..sun49(s).."季 "..dc..sun49(d).."日" end end end end function module.nowSunCalender(frame) local args = getArgs(frame) local color = string.lower(tostring(args[1])) -- 是否显示颜色 local timezone = args[2] -- 时区,【相对于东八区】,单位为【秒】,注意! local offset = args[3] -- 时间偏移,单位为天 if (timezone == nil) then timezone = 0 else timezone = tonumber(timezone) end if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() if (offset ~= nil) then now = now + offset * 86400 end if (timezone ~= nil) then now = now + timezone end return sunCalender(now, color, timezone) end function module.dateSunCalender(frame) local args = getArgs(frame) local y = tonumber(args[1]) local m = tonumber(args[2]) local d = tonumber(args[3]) local color = string.lower(tostring(args[4])) -- 是否显示颜色 local timezone = args[5] -- 时区,【相对于东八区】,单位为【秒】,注意! if (timezone == nil) then timezone = 0 else timezone = tonumber(timezone) end local date = os.time({year=y,month=m,day=d}) if (timezone ~= nil) then date = date + timezone end return sunCalender(date, color, timezone) end function module.nowSunAriCalender(frame) local args = getArgs(frame) local color = string.lower(tostring(args[1])) -- 是否显示颜色 local timezone = args[2] -- 时区,【相对于东八区】,单位为【秒】,注意! local offset = args[3] -- 时间偏移,单位为天 if (timezone == nil) then timezone = 0 else timezone = tonumber(timezone) end if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() if (offset ~= nil) then now = now + offset * 86400 end if (timezone ~= nil) then now = now + timezone end return sunAriCalender(now, color) end function module.dateSunAriCalender(frame) local args = getArgs(frame) local y = tonumber(args[1]) local m = tonumber(args[2]) local d = tonumber(args[3]) local color = string.lower(tostring(args[4])) -- 是否显示颜色 local timezone = args[5] -- 时区,【相对于东八区】,单位为【秒】,注意! if (timezone == nil) then timezone = 0 else timezone = tonumber(timezone) end local date = os.time({year=y,month=m,day=d}) if (timezone ~= nil) then date = date + timezone end return sunAriCalender(date, color) end function module.nowSunDay(frame) local args = getArgs(frame) local display = args[1] -- 显示长度 local color = string.lower(tostring(args[2])) -- 是否显示颜色 local offset = args[3] -- 时间偏移,单位为天 if (offset == nil) then offset = 0 else offset = tonumber(offset) end local now = os.time() if (offset ~= nil) then now = now + offset * 86400 end return sunDay(now, display, color) end function module.dateSunDay(frame) local args = getArgs(frame) local y = tonumber(args[1]) local m = tonumber(args[2]) local d = tonumber(args[3]) local display = args[4] -- 显示长度 local color = string.lower(tostring(args[5])) -- 是否显示颜色 local now = os.time({year=y,month=m,day=d}) return sunDay(now, display, color) end function module.latinTime(frame) local args = getArgs(frame) local offset = args[1] -- 时间偏移,单位为时 local month = {"Jeneiro", "Fabruario", "Marco", "Abrile", "Maio", "Jugno", "Julio", "Agosto", "Setembre", "Oktubre", "Novembre", "Decembre"} -- 1至12月 local weekday = {"Lunde", "Marde", "Merkrede", "Jeude", "Vendrede", "Sabado", "Domingo"} -- 周一至周日 local now = os.time() - 3600 * 8 if (offset ~= nil) then if (tonumber(offset)~=nil) then now = now + offset * 3600 end end return os.date("%X\n",now)..weekday[7-((7-tonumber(os.date("%w",now)))%7)]..os.date(", %d ",now)..month[tonumber(os.date("%m",now))]..os.date(" %Y",now) end function module.NorasiaTime(frame) local args = getArgs(frame) local offset = args[1] -- 时间偏移,单位为时 local month = {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"} -- 1至12月 local weekday = {"月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"} -- 周一至周日 local now = os.time() - 3600 * 8 if (offset ~= nil) then if (tonumber(offset)~=nil) then now = now + offset * 3600 end end return os.date("%X\n",now)..os.date(" %Y年 ",now)..month[tonumber(os.date("%m",now))]..os.date("%d日 ",now)..weekday[7-((7-tonumber(os.date("%w",now)))%7)] end function stringAt(str, pos) return string.sub(str, pos, pos) end function HetesflusYear(year) year = year - 1326 return stringAt('eDcszywhAaoiu', year % 13 + 1) .. stringAt('tbpmfvd', year % 7 + 1) .. stringAt('ZnlrgkNxjqS', year % 11 + 1) end function module.HetesflusTime(frame) local args = getArgs(frame) local offset = args[1] local now = os.time() if (offset ~= nil and tonumber(offset) ~= nil) then now = now + offset * 3600 end local dayOfYear = tonumber(os.date('%j', now)) local year = tonumber(os.date('%Y', now)) local month = 1 local sum = -11 local days = {30, 30, 30, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30} if year % 4 == 0 and (year % 100 ~= 0 or year % 400 == 0) then days[3] = 31 end while sum + days[month] < dayOfYear do sum = sum + days[month] month = month + 1 end if month < 4 then year = year - 1 end local monthName = {'冬', '寒', '花', '春', '收', '祭', '夏', '航', '酒', '秋', '種', '雨', '冬'} return '<samp>' .. HetesflusYear(year) .. '</samp>年' .. monthName[month] .. '月' .. (dayOfYear - sum) .. '日' end return module
摘要:
请注意,您对希服维基的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
希服维基:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模块:Time/doc
(
编辑
)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
编辑
查看历史
更多
导航
首页
最近更改
随机页面
沙盒
在线地图
官方网站
希顶相关网站
希顶维基
虫站
希顶语翻译器
工具
链入页面
相关更改
特殊页面
页面信息