วิกิพีเดีย
มอดูล:TimeAgo
นี่เป็นมอดูลที่ถูกป้องกันถาวรเนื่องจากมีความเสี่ยงสูง กรุณาอภิปรายการเปลี่ยนแปลงใด ๆ ทางหน้าคุย คุณอาจส่งคำขอแก้ไขไปยังผู้ดูแลระบบเพื่อให้แก้ไขได้หากเป็นการแก้ไขที่ไม่มีการคัดค้านหรือมีความเห็นพ้องสนับสนุน คุณยังสามารถขอให้เลิกป้องกันหน้าได้ |
คู่มือการใช้งานมอดูล[สร้าง]
คุณอาจจะต้องการสร้างคู่มือการใช้งานของมอดูลนี้ ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (แก้ | ดูความแตกต่าง) และชุดทดสอบ (แก้) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย /doc หน้าย่อยของมอดูลนี้ |
-- Replacement for [[Template:Time ago]] local getArgs = require('Module:Arguments').getArgs local p = {} function p.main( frame ) local args = getArgs( frame, { valueFunc = function( k, v ) if v then v = v:match( '^%s*(.-)%s*$' ) -- Trim whitespace. if k == 'ก่อน' or v ~= '' then return v end end return nil end }) return p._main( args ) end function p._main( args ) -- Initialize variables local lang = mw.language.getContentLanguage() local ago local auto_magnitude_num local min_magnitude_num local result local result_unit local magnitude = args.magnitude local min_magnitude = args.min_magnitude local purge = args.purge -- Generate the "ago" string. If ago is the blank string, do nothing - this allows overriding of args.ago -- in cases where the module is used to generate something like "where he has worked for the past 20 years." ago = args.ago if not ago then ago = 'ก่อน' end -- Add a purge link if something (usually "yes") is entered into the purge parameter if purge then purge = ' <span class="plainlinks">([' .. mw.title.getCurrentTitle():fullUrl('action=purge') .. ' purge])</span>' else purge = '' end -- Check that the entered timestamp is valid. If it isn't, then give an error message. local noError, inputTime = pcall( lang.formatDate, lang, 'U', args[1] ) if not noError then return '<strong class="error">Error: first parameter cannot be parsed as a date or time.</strong>' end -- Store the difference between the current time and the inputted time, as well as its absolute value. local timeDiff = lang:formatDate( 'U' ) - inputTime if args.tz_offset == "yes" then timeDiff = timeDiff + lang:formatDate( 'Z', nil, true ) end local absTimeDiff = math.abs( timeDiff ) if magnitude then auto_magnitude_num = 0 min_magnitude_num = timeText[magnitude] else -- Calculate the appropriate unit of time if it was not specified as an argument. local autoMagnitudeData = { {denom = 63115200, amn = 31557600}, {denom = 5356800, amn = 2678400}, {denom = 172800, amn = 86400}, {denom = 7200, amn = 3600}, {denom = 120, amn = 60} } for i, t in ipairs(autoMagnitudeData) do if absTimeDiff / t.denom >= 1 then auto_magnitude_num = t.amn break end end auto_magnitude_num = auto_magnitude_num or 1 if min_magnitude then min_magnitude_num = timeText[min_magnitude] else min_magnitude_num = -1 end end if not min_magnitude_num then -- Default to seconds if an invalid magnitude is entered. min_magnitude_num = 1 end local magnitude_num = math.max( min_magnitude_num, auto_magnitude_num ) local result_num = math.floor ( absTimeDiff / magnitude_num ) if timeDiff >= 0 then -- Past if result_num == 1 then result_unit = timeUnits[ magnitude_num ][1] else result_unit = timeUnits[ magnitude_num ][2] end result = result_num .. ' ' .. result_unit .. ago -- Spaces for "ago" are added earlier. else -- Future if result_num == 1 then result_unit = timeUnits[ magnitude_num ][3] else result_unit = timeUnits[ magnitude_num ][4] end result = 'อีก ' .. result_num .. ' ' .. result_unit end return result .. purge end -- Table to convert entered text values to numeric values. timeText = { ['seconds'] = 1, ['minutes'] = 60, ['hours'] = 3600, ['days'] = 86400, ['weeks'] = 604800, ['months'] = 2678400, ['years'] = 31557600 } -- Table containing tables of possible units to use in output. timeUnits = { [1] = { 'วินาที', 'วินาที', "วินาที", "วินาที" }, [60] = { 'นาที', 'นาที', "นาที", "นาที" }, [3600] = { 'ชั่วโมง', 'ชั่วโมง', "ชั่วโมง", "ชั่วโมง" }, [86400] = { 'วัน', 'วัน', "วัน", "วัน" }, [604800] = { 'สัปดาห์', 'สัปดาห์', "สัปดาห์", "สัปดาห์" }, [2678400] = { 'เดือน', 'เดือน', "เดือน", "เดือน" }, [31557600] = { 'ปี', 'ปี', "ปี", "ปี" } } return p