<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="he">
	<id>https://text.chabadpedia.com/index.php?action=history&amp;feed=atom&amp;title=%D7%99%D7%97%D7%99%D7%93%D7%94%3A%D7%AA%D7%90%D7%A8%D7%99%D7%9A</id>
	<title>יחידה:תאריך - היסטוריית גרסאות</title>
	<link rel="self" type="application/atom+xml" href="https://text.chabadpedia.com/index.php?action=history&amp;feed=atom&amp;title=%D7%99%D7%97%D7%99%D7%93%D7%94%3A%D7%AA%D7%90%D7%A8%D7%99%D7%9A"/>
	<link rel="alternate" type="text/html" href="https://text.chabadpedia.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%AA%D7%90%D7%A8%D7%99%D7%9A&amp;action=history"/>
	<updated>2026-05-05T10:16:35Z</updated>
	<subtitle>היסטוריית הגרסאות של הדף הזה בוויקי</subtitle>
	<generator>MediaWiki 1.40.3</generator>
	<entry>
		<id>https://text.chabadpedia.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%AA%D7%90%D7%A8%D7%99%D7%9A&amp;diff=23795&amp;oldid=prev</id>
		<title>מ. רובין: גרסה אחת יובאה</title>
		<link rel="alternate" type="text/html" href="https://text.chabadpedia.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%AA%D7%90%D7%A8%D7%99%D7%9A&amp;diff=23795&amp;oldid=prev"/>
		<updated>2025-09-07T08:02:33Z</updated>

		<summary type="html">&lt;p&gt;גרסה אחת יובאה&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;he&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ הגרסה הקודמת&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;גרסה מ־11:02, 7 בספטמבר 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;he&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(אין הבדלים)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>מ. רובין</name></author>
	</entry>
	<entry>
		<id>https://text.chabadpedia.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%AA%D7%90%D7%A8%D7%99%D7%9A&amp;diff=23794&amp;oldid=prev</id>
		<title>ויקיטקסט&gt;Effib: יצירת דף עם התוכן &quot;local Date = {} local maxDaysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}  --     Supported calendar models -- Date.CALENDAR = { 	GREGORIAN = &#039;Gregorian&#039;, 	JULIAN    = &#039;Julian&#039; }  --Internal functions --     Check if a value is a number in the given range     @param mixed value     @param number min     @param number max     @return boolean -- local function validateNumberInRange( value, min, max )     return type( value ) == &#039;number&#039;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://text.chabadpedia.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%AA%D7%90%D7%A8%D7%99%D7%9A&amp;diff=23794&amp;oldid=prev"/>
		<updated>2022-05-12T01:36:04Z</updated>

		<summary type="html">&lt;p&gt;יצירת דף עם התוכן &amp;quot;local Date = {} local maxDaysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}  --&lt;a href=&quot;/index.php?title=Supported_calendar_models&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Supported calendar models (הדף אינו קיים)&quot;&gt;Supported calendar models &lt;/a&gt;-- Date.CALENDAR = { 	GREGORIAN = &amp;#039;Gregorian&amp;#039;, 	JULIAN    = &amp;#039;Julian&amp;#039; }  --Internal functions --&lt;a href=&quot;/index.php?title=Check_if_a_value_is_a_number_in_the_given_range_@param_mixed_value_@param_number_min_@param_number_max_@return_boolean&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Check if a value is a number in the given range @param mixed value @param number min @param number max @return boolean (הדף אינו קיים)&quot;&gt;Check if a value is a number in the given range     @param mixed value     @param number min     @param number max     @return boolean &lt;/a&gt;-- local function validateNumberInRange( value, min, max )     return type( value ) == &amp;#039;number&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;דף חדש&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Date = {}&lt;br /&gt;
local maxDaysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Supported calendar models&lt;br /&gt;
]]--&lt;br /&gt;
Date.CALENDAR = {&lt;br /&gt;
	GREGORIAN = &amp;#039;Gregorian&amp;#039;,&lt;br /&gt;
	JULIAN    = &amp;#039;Julian&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Internal functions&lt;br /&gt;
--[[&lt;br /&gt;
    Check if a value is a number in the given range&lt;br /&gt;
    @param mixed value&lt;br /&gt;
    @param number min&lt;br /&gt;
    @param number max&lt;br /&gt;
    @return boolean&lt;br /&gt;
]]--&lt;br /&gt;
local function validateNumberInRange( value, min, max )&lt;br /&gt;
    return type( value ) == &amp;#039;number&amp;#039; and value &amp;gt;= min and value &amp;lt;= max&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Validate a time defintion&lt;br /&gt;
    @param table definition data&lt;br /&gt;
    @return boolean&lt;br /&gt;
]]--&lt;br /&gt;
local function validate(definition)&lt;br /&gt;
	--Validate constants&lt;br /&gt;
	if not Date.knowsPrecision(definition.precision) or &lt;br /&gt;
		(definition.calendar ~= Date.CALENDAR.GREGORIAN and definition.calendar ~= Date.CALENDAR.JULIAN) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    --Validate year&lt;br /&gt;
    if not (type( definition.year ) == &amp;#039;number&amp;#039; or (definition.year == nil and precision == Date.PRECISION.DAY)) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if definition.precision &amp;lt;= Date.PRECISION.YEAR then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Validate month&lt;br /&gt;
    if not validateNumberInRange( definition.month, 1, 12 ) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if definition.precision &amp;lt;= Date.PRECISION.MONTH then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Validate day&lt;br /&gt;
    if not validateNumberInRange( definition.day, 1, 31 ) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if definition.precision &amp;lt;= Date.PRECISION.DAY then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Validate hour&lt;br /&gt;
    if not validateNumberInRange( definition.hour, 0, 23 ) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if definition.precision &amp;lt;= Date.PRECISION.HOUR then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Validate minute&lt;br /&gt;
    if not validateNumberInRange( definition.minute, 0, 59 ) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if definition.precision &amp;lt;= Date.PRECISION.MINUTE then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Validate second&lt;br /&gt;
    if not validateNumberInRange( definition.second, 0, 60 ) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Try to find the relevant precision for a time definition&lt;br /&gt;
    @param table time definition&lt;br /&gt;
    @return number the precision&lt;br /&gt;
]]--&lt;br /&gt;
local function guessPrecision(definition)&lt;br /&gt;
    if definition.month == nil or (definition.month == 0 and definition.day == 0) then&lt;br /&gt;
        return Date.PRECISION.YEAR&lt;br /&gt;
    elseif definition.day == nil or definition.day == 0 then&lt;br /&gt;
        return Date.PRECISION.MONTH&lt;br /&gt;
    elseif definition.hour == nil then&lt;br /&gt;
        return Date.PRECISION.DAY&lt;br /&gt;
    elseif definition.minute == nil then&lt;br /&gt;
        return Date.PRECISION.HOUR&lt;br /&gt;
    elseif definition.second == nil then&lt;br /&gt;
        return Date.PRECISION.MINUTE&lt;br /&gt;
    else&lt;br /&gt;
        return Date.PRECISION.SECOND&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Try to find the relevant calendar for a time definition&lt;br /&gt;
    @param table time definition&lt;br /&gt;
    @return string the calendar name&lt;br /&gt;
]]--&lt;br /&gt;
local function guessCalendar( definition )&lt;br /&gt;
    if definition.year ~= nil and definition.year &amp;lt; 1583 and definition.precision &amp;gt; Date.PRECISION.MONTH then&lt;br /&gt;
        return Date.CALENDAR.JULIAN&lt;br /&gt;
    else&lt;br /&gt;
        return Date.CALENDAR.GREGORIAN&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Parse an ISO 2061 string and return it as a time definition&lt;br /&gt;
    @param string iso the iso datetime&lt;br /&gt;
    @param boolean withoutRecurrence concider date in the format XX-XX as year-month and not month-day&lt;br /&gt;
    @return table&lt;br /&gt;
]]--&lt;br /&gt;
local function parseIso8601( iso, withoutRecurrence )&lt;br /&gt;
    local definition = {}&lt;br /&gt;
&lt;br /&gt;
    --Split date and time&lt;br /&gt;
    iso = mw.text.trim( iso:upper() )&lt;br /&gt;
    local beginMatch, endMatch, date, time, offset = iso:find( &amp;#039;([%+%-]?[%d%-]+)[T ]?([%d%.:]*)([Z%+%-]?[%d:]*)&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
    if beginMatch ~= 1 or endMatch ~= iso:len() then --iso is not a valid ISO string&lt;br /&gt;
        return {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --date&lt;br /&gt;
    if date ~= nil then&lt;br /&gt;
        local isBC = false&lt;br /&gt;
        if date:sub( 1, 1 ) == &amp;#039;-&amp;#039; then&lt;br /&gt;
            isBC = true&lt;br /&gt;
            date = date:sub( 2, date:len() )&lt;br /&gt;
        end&lt;br /&gt;
        local parts = mw.text.split( date, &amp;#039;-&amp;#039; )&lt;br /&gt;
        if not withoutRecurrence and table.maxn( parts ) == 2 and parts[1]:len() == 2 then&lt;br /&gt;
            --MM-DD case&lt;br /&gt;
            definition.month = tonumber( parts[1] )&lt;br /&gt;
            definition.day = tonumber( parts[2] )&lt;br /&gt;
        else&lt;br /&gt;
            if isBC then&lt;br /&gt;
                definition.year = -1 * tonumber( parts[1] )  --FIXME - 1 --Years BC are counted since 0 and not -1&lt;br /&gt;
            else&lt;br /&gt;
                definition.year = tonumber( parts[1] )&lt;br /&gt;
            end&lt;br /&gt;
            definition.month = tonumber( parts[2] )&lt;br /&gt;
            definition.day = tonumber( parts[3] )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --time&lt;br /&gt;
    if time ~= nil then&lt;br /&gt;
        local parts = mw.text.split( time, &amp;#039;:&amp;#039; )&lt;br /&gt;
        definition.hour = tonumber( parts[1] )&lt;br /&gt;
        definition.minute = tonumber( parts[2] )&lt;br /&gt;
        definition.second = tonumber( parts[3] )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --offset&lt;br /&gt;
    if offset ~= nil then&lt;br /&gt;
        if offset == &amp;#039;Z&amp;#039; then&lt;br /&gt;
            definition.utcoffset = &amp;#039;+00:00&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            definition.utcoffset = offset&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return definition&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Format UTC offset for ISO output&lt;br /&gt;
    @param string offset UTC offset&lt;br /&gt;
    @return string UTC offset for ISO&lt;br /&gt;
]]--&lt;br /&gt;
local function formatUtcOffsetForIso( offset )&lt;br /&gt;
    if offset == &amp;#039;+00:00&amp;#039; then&lt;br /&gt;
        return &amp;#039;Z&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return offset&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Prepend as mutch as needed the character c to the string str in order to to have a string of length length&lt;br /&gt;
    @param mixed str&lt;br /&gt;
    @param string c&lt;br /&gt;
    @param number length&lt;br /&gt;
    @return string&lt;br /&gt;
]]--&lt;br /&gt;
local function prepend(str, c, length)&lt;br /&gt;
    str = tostring( str )&lt;br /&gt;
    while str:len() &amp;lt; length do&lt;br /&gt;
        str = c .. str&lt;br /&gt;
    end&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  LEAP_GREGORIAN  --  Is a given year in the Gregorian calendar a leap year ?&lt;br /&gt;
local function leapGregorian(year)&lt;br /&gt;
    return ((year % 4) == 0) and&lt;br /&gt;
            (not (((year % 100) == 0) and ((year % 400) ~= 0)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local isDateInLeapYear = function(indate)&lt;br /&gt;
	if indate.calendar == Date.CALENDAR.JULIAN then&lt;br /&gt;
		return 0 == indate.year % 4&lt;br /&gt;
	end&lt;br /&gt;
	return leapGregorian(indate.year)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  GREGORIAN_TO_JD  --  Determine Julian day number from Gregorian calendar date&lt;br /&gt;
local GREGORIAN_EPOCH = 1721425.5&lt;br /&gt;
&lt;br /&gt;
local function gregorianToJd(year, month, day)&lt;br /&gt;
    return (GREGORIAN_EPOCH - 1) +&lt;br /&gt;
           (365 * (year - 1)) +&lt;br /&gt;
           math.floor((year - 1) / 4) +&lt;br /&gt;
           (-math.floor((year - 1) / 100)) +&lt;br /&gt;
           math.floor((year - 1) / 400) +&lt;br /&gt;
           math.floor((((367 * month) - 362) / 12) +&lt;br /&gt;
           ((month &amp;lt;= 2) and 0 or&lt;br /&gt;
                               (leapGregorian(year) and -1 or -2)&lt;br /&gt;
           ) +&lt;br /&gt;
           day)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  JD_TO_JULIAN  --  Calculate Julian calendar date from Julian day&lt;br /&gt;
local function jdToJulian(td)&lt;br /&gt;
    local z, a, alpha, b, c, d, e, year, month, day&lt;br /&gt;
    &lt;br /&gt;
    td = td + 0.5&lt;br /&gt;
    z = math.floor(td)&lt;br /&gt;
    &lt;br /&gt;
    a = z&lt;br /&gt;
    b = a + 1524&lt;br /&gt;
    c = math.floor((b - 122.1) / 365.25)&lt;br /&gt;
    d = math.floor(365.25 * c)&lt;br /&gt;
    e = math.floor((b - d) / 30.6001)&lt;br /&gt;
    &lt;br /&gt;
    month = math.floor((e &amp;lt; 14) and (e - 1) or (e - 13))&lt;br /&gt;
    year = math.floor((month &amp;gt; 2) and (c - 4716) or (c - 4715))&lt;br /&gt;
    day = b - d - math.floor(30.6001 * e)&lt;br /&gt;
    &lt;br /&gt;
    --[[&lt;br /&gt;
        If year is less than 1, subtract one to convert from&lt;br /&gt;
        a zero based date system to the common era system in&lt;br /&gt;
        which the year -1 (1 B.C.E) is followed by year 1 (1 C.E.).&lt;br /&gt;
    --]]&lt;br /&gt;
    &lt;br /&gt;
    if year &amp;lt; 1 then&lt;br /&gt;
        year = year - 1&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- adapted from ro:Modul:GregorianDate&lt;br /&gt;
local initialOffset = -3&lt;br /&gt;
local limitDates = {&lt;br /&gt;
	{year = 4, month = 3, day = 3, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 100, month = 3, day = 2, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 200, month = 3, day = 1, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 300, month = 2, day = 29, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 500, month = 2, day = 28, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 600, month = 2, day = 27, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 700, month = 2, day = 26, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 900, month = 2, day = 25, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1000, month = 2, day = 24, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1100, month = 2, day = 23, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1300, month = 2, day = 22, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1400, month = 2, day = 21, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1500, month = 2, day = 20, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1700, month = 2, day = 19, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1800, month = 2, day = 18, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 1900, month = 2, day = 17, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 2100, month = 2, day = 16, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 2200, month = 2, day = 15, calendar = Date.CALENDAR.JULIAN },&lt;br /&gt;
	{year = 2300, month = 2, day = 14, calendar = Date.CALENDAR.JULIAN }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Date.julianToGregorian(indate)&lt;br /&gt;
	if indate.calendar ~= Date.CALENDAR.JULIAN then&lt;br /&gt;
			return indate&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outputDate&lt;br /&gt;
	if indate.precision &amp;gt; Date.PRECISION.MONTH then&lt;br /&gt;
		local offset = initialOffset&lt;br /&gt;
		local limitDateIdx = 1&lt;br /&gt;
		&lt;br /&gt;
		while limitDateIdx &amp;lt; #limitDates and Date.le(limitDates[limitDateIdx], indate) do&lt;br /&gt;
			limitDateIdx = limitDateIdx + 1&lt;br /&gt;
			offset = offset + 1&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		outputDate = Date.addDaysToDate(indate, offset)&lt;br /&gt;
	else&lt;br /&gt;
		outputDate = mw.clone(indate)&lt;br /&gt;
	end&lt;br /&gt;
	outputDate.calendar = Date.CALENDAR.GREGORIAN&lt;br /&gt;
	outputDate.calendarmodel = &amp;#039;http://www.wikidata.org/entity/Q1985727&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	return Date.new(outputDate)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Date.addDaysToDate(indate, days)&lt;br /&gt;
	local outdate = mw.clone(indate)&lt;br /&gt;
	&lt;br /&gt;
	outdate.day = outdate.day + days&lt;br /&gt;
	local lastDayOfMonth = maxDaysInMonth[outdate.month]&lt;br /&gt;
	while outdate.day &amp;gt; lastDayOfMonth do&lt;br /&gt;
		lastDayOfMonth = maxDaysInMonth[outdate.month]&lt;br /&gt;
		if outdate.month == 2 and isDateInLeapYear(outdate) then lastDayOfMonth = 29 end&lt;br /&gt;
		outdate.month = outdate.month + 1&lt;br /&gt;
		outdate.day = outdate.day - lastDayOfMonth&lt;br /&gt;
	end&lt;br /&gt;
	while outdate.month &amp;gt; 12 do&lt;br /&gt;
		outdate.year = outdate.year + 1&lt;br /&gt;
		outdate.month = outdate.month - 12&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return outdate&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Date.le(t1, t2, correct_calender)&lt;br /&gt;
	if t1.calendar ~= t2.calendar then&lt;br /&gt;
		if correct_calender then&lt;br /&gt;
			t1 = Date.julianToGregorian(t1)&lt;br /&gt;
			t2 = Date.julianToGregorian(t2)&lt;br /&gt;
		else&lt;br /&gt;
			 error(&amp;quot;Calanders dont match&amp;quot;, 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if t1.year &amp;lt; t2.year then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	if t1.year == t2.year then&lt;br /&gt;
		if t1.month &amp;lt; t2.month then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
		if t1.month == t2.month and t1.day &amp;lt;= t2.day then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Public interface&lt;br /&gt;
--[[&lt;br /&gt;
    Build a new Date&lt;br /&gt;
    @param table definition definition of the time&lt;br /&gt;
    @return Date|nil&lt;br /&gt;
]]--&lt;br /&gt;
function Date.new( definition )&lt;br /&gt;
    --Default values&lt;br /&gt;
    if definition.precision == nil then&lt;br /&gt;
        definition.precision = guessPrecision( definition )&lt;br /&gt;
    end&lt;br /&gt;
    if definition.calendar == nil then&lt;br /&gt;
        definition.calendar = guessCalendar( definition )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not validate( definition ) then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local time = {&lt;br /&gt;
        year = definition.year or nil,&lt;br /&gt;
        month = definition.month or 1,&lt;br /&gt;
        day = definition.day or 1,&lt;br /&gt;
        hour = definition.hour or 0,&lt;br /&gt;
        minute = definition.minute or 0,&lt;br /&gt;
        second = definition.second or 0,&lt;br /&gt;
        utcoffset = definition.utcoffset or &amp;#039;+00:00&amp;#039;,&lt;br /&gt;
        calendar = definition.calendar or Date.CALENDAR.GREGORIAN,&lt;br /&gt;
        precision = definition.precision or 0&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    setmetatable( time, {&lt;br /&gt;
        __index = Date,&lt;br /&gt;
        __le = le,&lt;br /&gt;
        __tostring = function( self ) return self:toString() end&lt;br /&gt;
    } )&lt;br /&gt;
        &lt;br /&gt;
    return time&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Build a new Date from an ISO 8601 datetime&lt;br /&gt;
    @param string iso the time as ISO string&lt;br /&gt;
    @param boolean withoutRecurrence concider date in the format XX-XX as year-month and not month-day&lt;br /&gt;
    @return Date|nil&lt;br /&gt;
]]--&lt;br /&gt;
function Date.newFromIso8601( iso, withoutRecurrence )&lt;br /&gt;
    return Date.new( parseIso8601( iso, withoutRecurrence ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Build a new Date from a Wikidata time value&lt;br /&gt;
    @param table wikidataValue the time as represented by Wikidata&lt;br /&gt;
    @return Date|nil&lt;br /&gt;
]]--&lt;br /&gt;
function Date.newFromWikidataValue( wikidataValue )&lt;br /&gt;
    local definition = parseIso8601( wikidataValue.time )&lt;br /&gt;
    definition.precision = wikidataValue.precision&lt;br /&gt;
&lt;br /&gt;
    if  wikidataValue.calendarmodel == &amp;#039;http://www.wikidata.org/entity/Q1985727&amp;#039; then&lt;br /&gt;
        definition.calendar = Date.CALENDAR.GREGORIAN&lt;br /&gt;
    elseif  wikidataValue.calendarmodel == &amp;#039;http://www.wikidata.org/entity/Q1985786&amp;#039; then&lt;br /&gt;
        definition.calendar = Date.CALENDAR.JULIAN&lt;br /&gt;
    else&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return Date.new( definition )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Build a new Date from a wiki string&lt;br /&gt;
    @param string wikitext string&lt;br /&gt;
    @return Date|nil	&lt;br /&gt;
]]&lt;br /&gt;
function Date.newFromWikitext( wikitext )&lt;br /&gt;
	local months = {&lt;br /&gt;
		[&amp;#039;ינואר&amp;#039;]= 1,&lt;br /&gt;
		[&amp;#039;פברואר&amp;#039;]= 2,&lt;br /&gt;
		[&amp;#039;מרץ&amp;#039;]= 3,&lt;br /&gt;
		[&amp;#039;אפריל&amp;#039;]= 4,&lt;br /&gt;
		[&amp;#039;מאי&amp;#039;]= 5,&lt;br /&gt;
		[&amp;#039;יוני&amp;#039;]= 6,&lt;br /&gt;
		[&amp;#039;יולי&amp;#039;]= 7,&lt;br /&gt;
		[&amp;#039;אוגוסט&amp;#039;]= 8,&lt;br /&gt;
		[&amp;#039;ספטמבר&amp;#039;]= 9,&lt;br /&gt;
		[&amp;#039;אוקטובר&amp;#039;]= 10,&lt;br /&gt;
		[&amp;#039;נובמבר&amp;#039;]= 11,&lt;br /&gt;
		[&amp;#039;דצמבר&amp;#039;]= 12&lt;br /&gt;
	}&lt;br /&gt;
	local calendar = nil&lt;br /&gt;
	if mw.ustring.find( wikitext, &amp;#039;&amp;lt;small&amp;gt;%(%[%[הלוח היוליאני%|יוליאני%]%]%)&amp;lt;/small&amp;gt;&amp;#039; ) then&lt;br /&gt;
		calendar = Date.CALENDAR.JULIAN&lt;br /&gt;
		wikitext = mw.ustring.gsub( wikitext, &amp;quot;&amp;lt;small&amp;gt;%(%[%[הלוח היוליאני%|יוליאני%]%]%)&amp;lt;/small&amp;gt;&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Remove instances of [ and ]&lt;br /&gt;
	wikitext = mw.ustring.gsub( wikitext, &amp;quot;[%[%]]&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	-- Remove footnotes &amp;amp; directionality markers&lt;br /&gt;
	wikitext = mw.text.killMarkers( wikitext )&lt;br /&gt;
	wikitext = mw.ustring.gsub(wikitext, &amp;quot;&amp;amp;rlm;&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
	wikitext = mw.ustring.gsub(wikitext, &amp;quot;&amp;amp;lrm;&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- BC to minus&lt;br /&gt;
	wikitext = mw.ustring.gsub( wikitext, &amp;quot;([0-9]+) לפנה[\&amp;quot;״]ס&amp;quot; , &amp;quot;-%1&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	for a in pairs(months) do&lt;br /&gt;
		wikitext = mw.ustring.gsub(wikitext, &amp;#039; ?ב?&amp;#039;..a, &amp;#039; &amp;#039; .. months[a]) &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mw.ustring.match(wikitext, &amp;#039;^המאה ה[־-]%d+$&amp;#039;) then&lt;br /&gt;
		local yearStr = mw.ustring.match(wikitext, &amp;#039;^המאה ה[־-](%d+)$&amp;#039;)&lt;br /&gt;
                return Date.new( { year=tonumber(yearStr)*100, month=0, day=0, precision= Date.PRECISION.YEAR100 } )&lt;br /&gt;
	end&lt;br /&gt;
	-- if there are alphabet chars return nil (unexpected character)&lt;br /&gt;
	assert(not mw.ustring.find(wikitext, &amp;#039;%a&amp;#039;), &amp;quot;Unexpected format&amp;quot;)&lt;br /&gt;
	local parts = mw.text.split(mw.text.trim(wikitext),&amp;#039; &amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    local definition = {}&lt;br /&gt;
	definition.calendar = calendar&lt;br /&gt;
	if #parts==3 then -- DMY date&lt;br /&gt;
		definition.year = tonumber(parts[3])&lt;br /&gt;
		definition.month = tonumber(parts[2])&lt;br /&gt;
		definition.day = tonumber(parts[1])&lt;br /&gt;
		assert(definition.year, &amp;quot;Could not recognize year&amp;quot;)&lt;br /&gt;
		assert(definition.month&amp;lt;13 and definition.month&amp;gt;0, &amp;quot;Could not recognize month number&amp;quot;)&lt;br /&gt;
		assert(definition.day&amp;lt;32 and definition.day&amp;gt;0, &amp;quot;Wrong date format&amp;quot;)&lt;br /&gt;
		definition.precision = Date.PRECISION.DAY&lt;br /&gt;
	elseif  #parts==2 then -- MY date&lt;br /&gt;
		definition.year = tonumber(parts[2])&lt;br /&gt;
		definition.month = tonumber(parts[1])  &lt;br /&gt;
		definition.precision = Date.PRECISION.MONTH&lt;br /&gt;
		assert(definition.year&amp;lt;1e7, &amp;quot;Could not recognize year&amp;quot;)&lt;br /&gt;
		assert(definition.month&amp;lt;13 and definition.month&amp;gt;0, &amp;quot;Could not recognize month number&amp;quot;)&lt;br /&gt;
	elseif #parts==1 then --Y date&lt;br /&gt;
		definition.precision = Date.PRECISION.YEAR&lt;br /&gt;
		definition.year=tonumber(parts[1])&lt;br /&gt;
		assert(definition.year&amp;lt;1e7, &amp;quot;Could not recognize year&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;quot;Unexpected date format&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return Date.new( definition )&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Return a Date as a ISO 8601 string&lt;br /&gt;
    @return string&lt;br /&gt;
]]--&lt;br /&gt;
function Date:toIso8601()&lt;br /&gt;
    local iso = &amp;#039;&amp;#039;&lt;br /&gt;
    if self.year ~= nil then&lt;br /&gt;
        if self.year &amp;lt; 0 then&lt;br /&gt;
             --Years BC are counted since 0 and not -1&lt;br /&gt;
            iso = &amp;#039;-&amp;#039; .. prepend(string.format(&amp;#039;%.0f&amp;#039;, -1 * self.year), &amp;#039;0&amp;#039;, 4)&lt;br /&gt;
        else&lt;br /&gt;
            iso = prepend(string.format(&amp;#039;%.0f&amp;#039;, self.year), &amp;#039;0&amp;#039;, 4)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --month&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.MONTH then&lt;br /&gt;
        return iso&lt;br /&gt;
    end&lt;br /&gt;
    if self.iso ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        iso = iso .. &amp;#039;-&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    iso = iso .. prepend( self.month, &amp;#039;0&amp;#039;, 2 )&lt;br /&gt;
&lt;br /&gt;
    --day&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.DAY then&lt;br /&gt;
        return iso&lt;br /&gt;
    end&lt;br /&gt;
    iso = iso .. &amp;#039;-&amp;#039; .. prepend( self.day, &amp;#039;0&amp;#039;, 2 )&lt;br /&gt;
&lt;br /&gt;
    --hour&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.HOUR then&lt;br /&gt;
        return iso&lt;br /&gt;
    end&lt;br /&gt;
    iso = iso .. &amp;#039;T&amp;#039; .. prepend( self.hour, &amp;#039;0&amp;#039;, 2 )&lt;br /&gt;
&lt;br /&gt;
    --minute&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.MINUTE then&lt;br /&gt;
        return iso .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
    end&lt;br /&gt;
    iso = iso .. &amp;#039;:&amp;#039; .. prepend( self.minute, &amp;#039;0&amp;#039;, 2 )&lt;br /&gt;
&lt;br /&gt;
    --second&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.SECOND then&lt;br /&gt;
        return iso .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
    end&lt;br /&gt;
    return iso .. &amp;#039;:&amp;#039; .. prepend( self.second, &amp;#039;0&amp;#039;, 2 ) .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Return a hebrew representation of Date as a string&lt;br /&gt;
    @return string&lt;br /&gt;
]]--&lt;br /&gt;
function Date:toHebrewString()&lt;br /&gt;
	local hebrewStr = &amp;#039;&amp;#039;&lt;br /&gt;
	local year = self.year&lt;br /&gt;
	&lt;br /&gt;
	if (self.precision &amp;gt;= Date.PRECISION.MY100) and (self.precision &amp;lt;= Date.PRECISION.MY) then&lt;br /&gt;
		if self.year&amp;gt;0 then&lt;br /&gt;
        	return (self.year/1000000) .. &amp;#039; מיליון שנים לספירה&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
        	return (-self.year/1000000) ..&amp;#039; מיליון שנים לפנה״ס&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
	elseif (self.precision &amp;gt;=Date.PRECISION.KY100) and (self.precision &amp;lt;= Date.PRECISION.KY) then&lt;br /&gt;
		if self.year&amp;gt;0 then&lt;br /&gt;
        	return &amp;#039;האלף ה־&amp;#039;.. (self.year/1000)&lt;br /&gt;
        else&lt;br /&gt;
        	return &amp;#039;האלף ה־&amp;#039;.. (-self.year/1000) ..&amp;#039; לפנה״ס&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
	elseif self.precision == Date.PRECISION.YEAR100 then&lt;br /&gt;
		if year&amp;gt;0 then&lt;br /&gt;
	        	return &amp;#039;המאה ה־&amp;#039;.. math.ceil(self.year/100)&lt;br /&gt;
		else&lt;br /&gt;
        		return &amp;#039;המאה ה־&amp;#039;.. math.ceil(-self.year/100) ..&amp;#039; לפנה״ס&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
	elseif self.precision == Date.PRECISION.YEAR10 then&lt;br /&gt;
        local year = math.floor((self.year &amp;lt; 0 and -1 * self.year or self.year)  / 10) * 10&lt;br /&gt;
        if self.year&amp;gt;0 then&lt;br /&gt;
        	if year%100==0 then&lt;br /&gt;
        		return  &amp;#039;העשור הראשון של המאה ה־&amp;#039;.. tostring((year/100)+1)&lt;br /&gt;
        	else&lt;br /&gt;
        		return &amp;#039;שנות ה־&amp;#039; .. tostring(year%100) .. &amp;#039; של המאה ה־&amp;#039;.. tostring(math.ceil(year/100))&lt;br /&gt;
        	end&lt;br /&gt;
        else&lt;br /&gt;
        	if year%100==0 then&lt;br /&gt;
        		return  &amp;#039;העשור הראשון של המאה ה־&amp;#039;.. tostring((year/100))..&amp;#039; לפנה״ס&amp;#039;&lt;br /&gt;
        	else&lt;br /&gt;
        		return &amp;#039;שנות ה־&amp;#039; .. tostring(year%100) .. &amp;#039; של המאה ה־&amp;#039;.. tostring(math.ceil(year/100))..&amp;#039; לפנה״ס&amp;#039;&lt;br /&gt;
        	end&lt;br /&gt;
        end&lt;br /&gt;
	end&lt;br /&gt;
    if self.year ~= nil then&lt;br /&gt;
        if self.year &amp;lt; 0 then&lt;br /&gt;
            hebrewStr = mw.ustring.format(&amp;#039;%d לפנה״ס&amp;#039;,  (-1*self.year))&lt;br /&gt;
        else&lt;br /&gt;
			if self.calendar == Date.CALENDAR.JULIAN and self.year &amp;gt; 1583 then&lt;br /&gt;
				hebrewStr = mw.ustring.format(&amp;#039;%d &amp;lt;small&amp;gt;([[הלוח היוליאני|יוליאני]])&amp;lt;/small&amp;gt;&amp;#039;,  (self.year))&lt;br /&gt;
			else&lt;br /&gt;
				hebrewStr = mw.ustring.format(&amp;#039;%d&amp;#039;,  self.year)&lt;br /&gt;
			end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --month&lt;br /&gt;
    if self.precision&amp;gt;=Date.PRECISION.YEAR and self.precision &amp;lt; Date.PRECISION.MONTH then&lt;br /&gt;
        return hebrewStr&lt;br /&gt;
    end&lt;br /&gt;
    local months = { &amp;#039;ינואר&amp;#039;,&amp;#039;פברואר&amp;#039;, &amp;#039;מרץ&amp;#039;, &amp;#039;אפריל&amp;#039;, &amp;#039;מאי&amp;#039;, &amp;#039;יוני&amp;#039;, &amp;#039;יולי&amp;#039;, &amp;#039;אוגוסט&amp;#039;, &amp;#039;ספטמבר&amp;#039;, &amp;#039;אוקטובר&amp;#039;, &amp;#039;נובמבר&amp;#039;,&amp;#039;דצמבר&amp;#039; }&lt;br /&gt;
    hebrewStr = months[self.month] .. &amp;#039; &amp;#039; .. hebrewStr&lt;br /&gt;
&lt;br /&gt;
    --day&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.DAY then&lt;br /&gt;
        return hebrewStr&lt;br /&gt;
    end&lt;br /&gt;
    hebrewStr = mw.ustring.format(&amp;#039;%d ב%s&amp;#039;, self.day, hebrewStr)&lt;br /&gt;
&lt;br /&gt;
    --hour&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.HOUR then&lt;br /&gt;
        return hebrewStr&lt;br /&gt;
    end&lt;br /&gt;
    hebrewStr = mw.ustring.format(&amp;#039;%s בשעה %d&amp;#039;,  hebrewStr, self.hour)&lt;br /&gt;
&lt;br /&gt;
    --minute&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.MINUTE then&lt;br /&gt;
        return hebrewStr .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
    end&lt;br /&gt;
    hebrewStr = hebrewStr .. &amp;#039;:&amp;#039; .. prepend( self.minute, &amp;#039;0&amp;#039;, 2 )&lt;br /&gt;
&lt;br /&gt;
    --second&lt;br /&gt;
    if self.precision &amp;lt; Date.PRECISION.SECOND then&lt;br /&gt;
        return hebrewStr .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
    end&lt;br /&gt;
    return hebrewStr .. &amp;#039;:&amp;#039; .. prepend( self.second, &amp;#039;0&amp;#039;, 2 ) .. formatUtcOffsetForIso( self.utcoffset )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Return a Date as a string&lt;br /&gt;
    @param mw.language|string|nil language to use. By default the content language.&lt;br /&gt;
    @return string&lt;br /&gt;
]]--&lt;br /&gt;
function Date:toString( language )&lt;br /&gt;
    if language == nil then&lt;br /&gt;
        return self:toIso8601()&lt;br /&gt;
    end&lt;br /&gt;
    if language == &amp;#039;he&amp;#039; then&lt;br /&gt;
    	return self:toHebrewString()&lt;br /&gt;
    end&lt;br /&gt;
    --[[if type( language ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
        language = mw.language.new( language )&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return language:formatDate( &amp;#039;r&amp;#039;, self:toIso8601() )]]&lt;br /&gt;
    return self:toIso8601()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Return a Date in HTMl (with a &amp;lt;time&amp;gt; node)&lt;br /&gt;
    @param mw.language|string|nil language to use. By default the content language.&lt;br /&gt;
    @param table|nil attributes table of attributes to add to the &amp;lt;time&amp;gt; node.&lt;br /&gt;
    @return string&lt;br /&gt;
]]--&lt;br /&gt;
function Date:toHtml( language, attributes )&lt;br /&gt;
    if attributes == nil then&lt;br /&gt;
        attributes = {}&lt;br /&gt;
    end&lt;br /&gt;
    attributes[&amp;#039;datetime&amp;#039;] = self:toIso8601()&lt;br /&gt;
    return mw.text.tag( &amp;#039;time&amp;#039;, attributes, self:toString( language ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    All possible precisions for a Date (same ids as Wikibase)&lt;br /&gt;
]]--&lt;br /&gt;
Date.PRECISION = {&lt;br /&gt;
	GY      = 0, --Gigayear&lt;br /&gt;
	MY100   = 1, --100 Megayears&lt;br /&gt;
	MY10    = 2, --10 Megayears&lt;br /&gt;
	MY      = 3, --Megayear&lt;br /&gt;
	KY100   = 4, --100 Kiloyears&lt;br /&gt;
	KY10    = 5, --10 Kiloyears&lt;br /&gt;
	KY      = 6, --Kiloyear&lt;br /&gt;
	YEAR100 = 7, --100 years&lt;br /&gt;
	YEAR10  = 8, --10 years&lt;br /&gt;
	YEAR    = 9,&lt;br /&gt;
	MONTH   = 10,&lt;br /&gt;
	DAY     = 11,&lt;br /&gt;
	HOUR    = 12,&lt;br /&gt;
	MINUTE  = 13,&lt;br /&gt;
	SECOND  = 14&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    Check if the precision is known&lt;br /&gt;
    @param number precision ID&lt;br /&gt;
    @return boolean&lt;br /&gt;
]]--&lt;br /&gt;
function Date.knowsPrecision( precision )&lt;br /&gt;
	for _,id in pairs( Date.PRECISION ) do&lt;br /&gt;
		if id == precision then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Date.age(time1, time2)&lt;br /&gt;
    if time2 == nil then&lt;br /&gt;
        time2 = Date.newFromIso8601(mw.getContentLanguage():formatDate(&amp;#039;c&amp;#039;, nil, true), true)&lt;br /&gt;
    end&lt;br /&gt;
	local age = {year, month, day}&lt;br /&gt;
	age.year = time2.year - time1.year&lt;br /&gt;
	age.month = time2.month - time1.month&lt;br /&gt;
	age.day = time2.day - time1.day&lt;br /&gt;
	if age.day &amp;lt; 0 then&lt;br /&gt;
			local lastMonth = time2.month - 1&lt;br /&gt;
			if lastMonth == 0 then&lt;br /&gt;
				lastMonth = 12&lt;br /&gt;
			end&lt;br /&gt;
		age.day = age.day + maxDaysInMonth[lastMonth]&lt;br /&gt;
		age.month = age.month - 1&lt;br /&gt;
	end&lt;br /&gt;
		if age.month &amp;lt; 0 then&lt;br /&gt;
		age.month = age.month + 12&lt;br /&gt;
		age.year = age.year - 1&lt;br /&gt;
	end&lt;br /&gt;
    if time1.year &amp;lt; 0 and time2.year &amp;gt; 0 then&lt;br /&gt;
        age.year = age.year - 1&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	return age&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Date:formatDate(options)&lt;br /&gt;
    options = options or {}&lt;br /&gt;
    local fd = &amp;#039;&amp;#039;&lt;br /&gt;
    if self.precision &amp;gt;= Date.PRECISION.DAY then&lt;br /&gt;
        fd = self.year &amp;lt; 0 and (-1 * self.year) .. &amp;#039; לפנה&amp;quot;ס&amp;#039; or fd .. self.year&lt;br /&gt;
        if options.link then fd = &amp;#039;[[&amp;#039; .. fd .. &amp;#039;]]&amp;#039; end&lt;br /&gt;
        local d = &amp;#039;2000-&amp;#039; .. prepend(self.month, &amp;#039;0&amp;#039;, 2) .. &amp;#039;-&amp;#039; .. prepend(self.day, &amp;#039;0&amp;#039;, 2)&lt;br /&gt;
        local lang = mw.getContentLanguage()&lt;br /&gt;
        fd = fd .. &amp;#039;. &amp;#039; .. lang:formatDate(options.link and &amp;#039;[[j xg]]&amp;#039; or &amp;#039;j xg&amp;#039;, d)&lt;br /&gt;
	elseif self.precision &amp;gt;= Date.PRECISION.MONTH then&lt;br /&gt;
		fd = self.year &amp;lt; 0 and (-1 * self.year) .. &amp;#039; לפנה&amp;quot;ס&amp;#039; or fd .. self.year&lt;br /&gt;
		local month = mw.getContentLanguage():formatDate(&amp;#039;F&amp;#039;, &amp;#039;2000-&amp;#039; .. self.month)&lt;br /&gt;
		if options.link then fd = &amp;#039;[[&amp;#039; .. fd .. &amp;#039;]]&amp;#039; end&lt;br /&gt;
		fd = month .. &amp;#039; &amp;#039; .. fd&lt;br /&gt;
    elseif self.precision &amp;gt;= Date.PRECISION.YEAR then&lt;br /&gt;
        fd = self.year &amp;lt; 0 and (-1 * self.year) .. &amp;#039; לפנה&amp;quot;ס&amp;#039; or fd .. self.year&lt;br /&gt;
        if options.link ~= &amp;#039;nem&amp;#039; then fd = &amp;#039;[[&amp;#039; .. fd .. &amp;#039;]]&amp;#039; end&lt;br /&gt;
    elseif self.precision == Date.PRECISION.YEAR10 then&lt;br /&gt;
        local year = math.floor((self.year &amp;lt; 0 and -1 * self.year or self.year)  / 10) * 10&lt;br /&gt;
        fd = &amp;#039;שנות ה-&amp;#039; .. tostring(year%100) .. &amp;#039; של המאה ה-&amp;#039;.. tostring(ceil(year/100))&lt;br /&gt;
        fd = self.year &amp;lt; 0 and year .. &amp;#039; לפנה&amp;quot;ס&amp;#039; or tostring(year)&lt;br /&gt;
    elseif self.precision == Date.PRECISION.YEAR100 then&lt;br /&gt;
        if self.year &amp;lt; 0 then&lt;br /&gt;
            fd = &amp;#039;המאה ה-&amp;#039; .. math.floor(-1 * self.year / 100) .. &amp;#039; לפנה&amp;quot;ס&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            fd = &amp;#039;המאה ה-&amp;#039; ..math.floor(self.year / 100)&lt;br /&gt;
        end&lt;br /&gt;
        if options.link then fd = &amp;#039;[[&amp;#039; .. fd .. &amp;#039;]]&amp;#039; end&lt;br /&gt;
    else&lt;br /&gt;
        fd = tostring(self.year)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return fd&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function parseStrDate(dateStr, dateType)&lt;br /&gt;
	local datetime = Date.newFromWikitext( dateStr )&lt;br /&gt;
	if datetime.precision &amp;gt;= Date.PRECISION.DAY then -- DMY date&lt;br /&gt;
		if dateType==&amp;#039;Y&amp;#039; then&lt;br /&gt;
			res = datetime.year&lt;br /&gt;
		elseif dateType==&amp;#039;M&amp;#039; then&lt;br /&gt;
			res = datetime.month &lt;br /&gt;
		elseif dateType==&amp;#039;D&amp;#039; then&lt;br /&gt;
			res = datetime.day&lt;br /&gt;
		elseif dateType == &amp;#039;TS&amp;#039; then&lt;br /&gt;
			res = datetime:toIso8601()&lt;br /&gt;
		end&lt;br /&gt;
	elseif  datetime.precision &amp;gt;= Date.PRECISION.MONTH then -- MY date&lt;br /&gt;
&lt;br /&gt;
		if dateType==&amp;#039;Y&amp;#039; then&lt;br /&gt;
			res = datetime.year&lt;br /&gt;
		elseif dateType==&amp;#039;M&amp;#039; then&lt;br /&gt;
			res = datetime.month&lt;br /&gt;
		elseif dateType == &amp;#039;TS&amp;#039; then&lt;br /&gt;
			res = datetime:toIso8601()&lt;br /&gt;
		end&lt;br /&gt;
	else --Y date&lt;br /&gt;
		if dateType==&amp;#039;Y&amp;#039; then&lt;br /&gt;
			res = datetime.year&lt;br /&gt;
		elseif dateType == &amp;#039;TS&amp;#039; then&lt;br /&gt;
			res = datetime:toIso8601()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parseDateRange(dateRangeStr, diffFormat, inclusive )&lt;br /&gt;
	-- remove footnotes&lt;br /&gt;
	dateRangeStr = mw.text.killMarkers(dateRangeStr)&lt;br /&gt;
	dateRangeStr = mw.ustring.gsub(dateRangeStr, &amp;quot;&amp;amp;rlm;&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
	local outputPrefix = &amp;#039;&amp;#039;&lt;br /&gt;
	local parts = mw.text.split(dateRangeStr,&amp;#039; *[–%-] *&amp;#039;)&lt;br /&gt;
	assert(#parts==2 or #parts==1, &amp;quot;Date range expected format is from - to or from (e.g from - now)&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- parse dates&lt;br /&gt;
	local t1 = Date.newFromWikitext( parts[1] )&lt;br /&gt;
	local t2&lt;br /&gt;
	local useCurrent = #parts&amp;lt;2 or (parts[2] == &amp;#039;היום&amp;#039; or parts[2]==&amp;#039;הווה&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	if not useCurrent then&lt;br /&gt;
		t2 = Date.newFromWikitext( parts[2] )&lt;br /&gt;
	else&lt;br /&gt;
		t2 = Date.newFromIso8601(mw.getContentLanguage():formatDate(&amp;#039;c&amp;#039;, nil, true), true)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local hasYears = (diffFormat==&amp;#039;auto&amp;#039;)&lt;br /&gt;
	local hasDays = (diffFormat==&amp;#039;auto&amp;#039;)&lt;br /&gt;
	for i=1,#diffFormat do  &lt;br /&gt;
		if (diffFormat[i]==&amp;#039;years&amp;#039;) then &lt;br /&gt;
			hasYears=true&lt;br /&gt;
		elseif diffFormat[i]==&amp;#039;days&amp;#039; then&lt;br /&gt;
			hasDays =true&lt;br /&gt;
		end &lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	if hasDays and ((t1.precision&amp;gt;=Date.PRECISION.MONTH and t2.precision&amp;lt;Date.PRECISION.MONTH) or (t1.precision&amp;lt;Date.PRECISION.MONTH and t2.precision&amp;gt;=Date.PRECISION.MONTH)) then&lt;br /&gt;
		-- Ambiguous date range&lt;br /&gt;
		if t2.year - t1.year &amp;gt; 2 then &lt;br /&gt;
			diffFormat = {&amp;#039;years&amp;#039;}&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local NO_GUESS, MONTH_GUESS, DAY_GUESS = 0, 1, 2&lt;br /&gt;
	local guessLevel = NO_GUESS&lt;br /&gt;
	if t1.precision&amp;lt;Date.PRECISION.MONTH or t2.precision&amp;lt;Date.PRECISION.MONTH then &lt;br /&gt;
		guessLevel = MONTH_GUESS&lt;br /&gt;
		inclusive=true&lt;br /&gt;
	elseif t1.precision&amp;lt;Date.PRECISION.DAY or t2.precision&amp;lt;Date.PRECISION.DAY then&lt;br /&gt;
		guessLevel = DAY_GUESS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local t1 = os.time({&lt;br /&gt;
		year = t1.year,&lt;br /&gt;
		month = t1.month or 6,&lt;br /&gt;
		day = t1.day or 16&lt;br /&gt;
		})&lt;br /&gt;
	t2= os.time({&lt;br /&gt;
			year = t2.year,&lt;br /&gt;
			month = t2.month or 6,&lt;br /&gt;
			day = t2.day or 16&lt;br /&gt;
		})&lt;br /&gt;
&lt;br /&gt;
	local dif = os.difftime (t2, t1)&lt;br /&gt;
	local lang = mw.getContentLanguage()&lt;br /&gt;
	local readableInterval = lang:getDurationIntervals(dif, {&amp;#039;years&amp;#039;, &amp;#039;days&amp;#039;})&lt;br /&gt;
	readableInterval[&amp;#039;days&amp;#039;] = readableInterval[&amp;#039;days&amp;#039;] or 0&lt;br /&gt;
	readableInterval[&amp;#039;years&amp;#039;] = readableInterval[&amp;#039;years&amp;#039;] or 0&lt;br /&gt;
	if not (guessLevel==NO_GUESS) and not (guessLevel==DAY_GUESS and hasYears and #diffFormat==1 and readableInterval[&amp;#039;days&amp;#039;]&amp;gt;31) then &lt;br /&gt;
		outputPrefix=&amp;#039;כ־&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if inclusive then&lt;br /&gt;
		dif = dif+60*60*24 -- include last day&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if diffFormat==&amp;quot;auto&amp;quot; then&lt;br /&gt;
		if dif&amp;lt;=60*60*24 then&lt;br /&gt;
			return &amp;#039;&amp;#039; -- Ambiguous date range - we arent handling preceision of less than 1 day (hours, minutes, seconds)&lt;br /&gt;
		end&lt;br /&gt;
		if guessLevel==MONTH_GUESS and readableInterval[&amp;#039;years&amp;#039;]==0 then&lt;br /&gt;
			return &amp;#039;&amp;#039; -- Ambiguous date range&lt;br /&gt;
		end&lt;br /&gt;
		--for intervals of around year &lt;br /&gt;
		if readableInterval[&amp;#039;years&amp;#039;]&amp;gt;0 and (readableInterval[&amp;#039;days&amp;#039;]&amp;lt;30 or (365-readableInterval[&amp;#039;days&amp;#039;])&amp;lt;30) then&lt;br /&gt;
			-- around&lt;br /&gt;
			if readableInterval[&amp;#039;days&amp;#039;]&amp;lt;30 then&lt;br /&gt;
				dif = dif - readableInterval[&amp;#039;days&amp;#039;]*(60*60*24)&lt;br /&gt;
			else&lt;br /&gt;
				dif = dif+((365-readableInterval[&amp;#039;days&amp;#039;])*(60*60*24))&lt;br /&gt;
			end&lt;br /&gt;
			diffFormat = {&amp;#039;years&amp;#039;}&lt;br /&gt;
		else&lt;br /&gt;
			local diffDays = dif/(60*60*24)&lt;br /&gt;
			if diffDays&amp;lt;7*3 then diffFormat = { &amp;#039;days&amp;#039; }&lt;br /&gt;
			elseif diffDays&amp;lt;364 then diffFormat = {&amp;#039;weeks&amp;#039;, &amp;#039;days&amp;#039;}&lt;br /&gt;
			elseif diffDays&amp;lt;10*365 then diffFormat = {&amp;#039;years&amp;#039;, &amp;#039;weeks&amp;#039;}&lt;br /&gt;
			else  diffFormat = {&amp;#039;years&amp;#039;} &lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if diffFormat==&amp;quot;raw&amp;quot; then&lt;br /&gt;
		return dif&lt;br /&gt;
	else&lt;br /&gt;
		local res =  outputPrefix..lang:formatDuration(dif, diffFormat)&lt;br /&gt;
		-- post process formatDuration which is not good enough&lt;br /&gt;
		res= mw.ustring.gsub(res,&amp;quot;כ־([א-ת])&amp;quot;,&amp;quot;כ%1&amp;quot;)&lt;br /&gt;
		res= mw.ustring.gsub(res,&amp;quot;וגם ([0-9])&amp;quot;,&amp;quot;ו־%1&amp;quot;)&lt;br /&gt;
		res= mw.ustring.gsub(res,&amp;quot;וגם ([א-ת])&amp;quot;,&amp;quot;ו%1&amp;quot;)&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parseDateRangeSafe(frame)&lt;br /&gt;
	local diffFormat = &amp;#039;auto&amp;#039;&lt;br /&gt;
	if frame.args[2] == &amp;#039;ימים&amp;#039; then&lt;br /&gt;
		diffFormat = {&amp;#039;days&amp;#039;}&lt;br /&gt;
	elseif frame.args[2] == &amp;#039;שנים&amp;#039; then&lt;br /&gt;
		diffFormat = {&amp;#039;years&amp;#039;}&lt;br /&gt;
	elseif frame.args[2] == &amp;quot;הפרש&amp;quot; then&lt;br /&gt;
		diffFormat = &amp;quot;raw&amp;quot;&lt;br /&gt;
	elseif frame.args[2] == &amp;quot;גיל&amp;quot; then&lt;br /&gt;
		diffFormat = {&amp;#039;years&amp;#039;}&lt;br /&gt;
	elseif frame.args[2] == &amp;quot;מספר&amp;quot; then&lt;br /&gt;
		diffFormat = {&amp;#039;years&amp;#039;}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local inclusive = (frame.args[&amp;quot;כולל&amp;quot;]==&amp;quot;כן&amp;quot;)&lt;br /&gt;
	local success, res = pcall(parseDateRange, frame.args[1], diffFormat, inclusive)&lt;br /&gt;
&lt;br /&gt;
	if success then&lt;br /&gt;
		local str=res&lt;br /&gt;
		-- the following translations are needed because the underline function&lt;br /&gt;
		-- local format is wierd&lt;br /&gt;
		str = mw.ustring.gsub(str,  &amp;quot;(כ)־([א-ת])&amp;quot;, &amp;quot;%1%2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if frame.args[2] == &amp;quot;גיל&amp;quot; then&lt;br /&gt;
			str= mw.ustring.gsub(str,&amp;quot;כ־(.+) שנים&amp;quot;,&amp;quot;%1 בערך&amp;quot;)&lt;br /&gt;
			str= mw.ustring.gsub(str,&amp;quot; שנים&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	-- This parameter returns the difference as number of years, without any text.&lt;br /&gt;
		if frame.args[2] == &amp;quot;מספר&amp;quot; then&lt;br /&gt;
			str= mw.ustring.gsub(str,&amp;quot;כ(.+)&amp;quot;,&amp;quot;%1&amp;quot;);&lt;br /&gt;
			str= mw.ustring.gsub(str,&amp;quot;־(.+)&amp;quot;,&amp;quot;%1&amp;quot;);&lt;br /&gt;
			str= mw.ustring.gsub(str,&amp;quot; שנים&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
			if str == &amp;quot;שנתיים&amp;quot; then&lt;br /&gt;
				str = 2&lt;br /&gt;
			end&lt;br /&gt;
			if str == &amp;quot;שנה&amp;quot; then&lt;br /&gt;
				str = 1&lt;br /&gt;
			end&lt;br /&gt;
			str = mw.ustring.gsub(str,&amp;quot; שנה&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			if tonumber(str) &amp;gt; 0 and&lt;br /&gt;
					tonumber(parseDateRange(frame.args[1], &amp;quot;raw&amp;quot;, inclusive)) &amp;lt; 0 then&lt;br /&gt;
				str = -1 * str&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return str&lt;br /&gt;
	else&lt;br /&gt;
		return frame.args[&amp;#039;error&amp;#039;] or &amp;#039;&amp;lt;span class=&amp;quot;scribunto-error&amp;quot;&amp;gt;שגיאת תאריך: &amp;#039;..res..&amp;#039;&amp;lt;/span&amp;gt;[[קטגוריה:דפים עם שגיאות בתאריך]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parseStrDateSafe(frame)&lt;br /&gt;
	local dateType = frame.args[2]&lt;br /&gt;
	if dateType ==&amp;#039;שנה&amp;#039; then&lt;br /&gt;
		dateType = &amp;#039;Y&amp;#039;&lt;br /&gt;
	elseif dateType==&amp;#039;חודש&amp;#039; then&lt;br /&gt;
		dateType = &amp;#039;M&amp;#039;&lt;br /&gt;
	elseif dateType==&amp;#039;יום&amp;#039; then&lt;br /&gt;
		dateType=&amp;#039;D&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local success, res = pcall( parseStrDate, frame.args[1], dateType )&lt;br /&gt;
	if success then&lt;br /&gt;
		if dateType==&amp;#039;Y&amp;#039; and mw.ustring.sub( res, 0, 1)==&amp;#039;-&amp;#039; then&lt;br /&gt;
			res = mw.ustring.sub( res, 2).. &amp;#039; לפנה&amp;quot;ס&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		return res&lt;br /&gt;
	else&lt;br /&gt;
		return frame.args[&amp;#039;error&amp;#039;] or &amp;#039;&amp;lt;span class=&amp;quot;scribunto-error&amp;quot;&amp;gt;שגיאת תאריך: &amp;#039;..res..&amp;#039;&amp;lt;/span&amp;gt;[[קטגוריה:דפים עם שגיאות בתאריך]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function linkStrDateUnsafe(frame)&lt;br /&gt;
	local dateStr = frame.args[1]&lt;br /&gt;
	local linkedDateStr = dateStr&lt;br /&gt;
	-- Strip [ and ] chars&lt;br /&gt;
	linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;%[&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;%]&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	-- Link D M Y, return [[D M]] [[Y]]&lt;br /&gt;
	linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;^(%d+ %a+) (%d+)$&amp;#039;, &amp;#039;[[%1]] [[%2]]&amp;#039;)&lt;br /&gt;
	-- Link D M, return [[D M]]&lt;br /&gt;
	if	mw.ustring.find(linkedDateStr, &amp;#039;%[&amp;#039;) == nil	then&lt;br /&gt;
		linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;^(%d+) (%a+)$&amp;#039;, &amp;#039;[[%1 %2]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- Link M Y, return [[M]] [[Y]]&lt;br /&gt;
	if	mw.ustring.find(linkedDateStr, &amp;#039;%[&amp;#039;) == nil	then&lt;br /&gt;
		linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;^(%a+) (%d+)$&amp;#039;, &amp;#039;[[%1]] [[%2]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- Link Y, return [[Y]]&lt;br /&gt;
	if	mw.ustring.find(linkedDateStr, &amp;#039;%[&amp;#039;) == nil	then&lt;br /&gt;
		linkedDateStr = mw.ustring.gsub(linkedDateStr, &amp;#039;^(%d+)$&amp;#039;, &amp;#039;[[%1]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- Unknown date string format, return the original string&lt;br /&gt;
	if	mw.ustring.find(linkedDateStr, &amp;#039;%[&amp;#039;) == nil	then&lt;br /&gt;
		linkedDateStr = dateStr&lt;br /&gt;
	end&lt;br /&gt;
	return linkedDateStr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Date[&amp;#039;חשב&amp;#039;] = parseStrDateSafe;&lt;br /&gt;
Date[&amp;#039;חשב טווח&amp;#039;] =  parseDateRangeSafe;&lt;br /&gt;
Date[&amp;#039;parseDateRange&amp;#039;] =  parseDateRange;&lt;br /&gt;
Date[&amp;#039;מקושר&amp;#039;] = linkStrDateUnsafe;&lt;br /&gt;
&lt;br /&gt;
return Date&lt;/div&gt;</summary>
		<author><name>ויקיטקסט&gt;Effib</name></author>
	</entry>
</feed>