﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://xn--90aogluj.xn--p1ai/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ACalendar</id>
	<title>Модуль:Calendar - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://xn--90aogluj.xn--p1ai/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ACalendar"/>
	<link rel="alternate" type="text/html" href="http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;action=history"/>
	<updated>2026-08-04T01:54:55Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=10302&amp;oldid=prev</id>
		<title>Peandre2: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=10302&amp;oldid=prev"/>
		<updated>2020-03-22T06:46:00Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 06:46, 22 марта 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&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>Peandre2</name></author>
		
	</entry>
	<entry>
		<id>http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=10301&amp;oldid=prev</id>
		<title>ru&gt;Carn: обновление</title>
		<link rel="alternate" type="text/html" href="http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=10301&amp;oldid=prev"/>
		<updated>2020-03-21T13:44:37Z</updated>

		<summary type="html">&lt;p&gt;обновление&lt;/p&gt;
&lt;a href=&quot;http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;amp;diff=10301&amp;amp;oldid=9985&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>ru&gt;Carn</name></author>
		
	</entry>
	<entry>
		<id>http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=9985&amp;oldid=prev</id>
		<title>Peandre2: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=9985&amp;oldid=prev"/>
		<updated>2020-03-04T21:15:05Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 21:15, 4 марта 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&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>Peandre2</name></author>
		
	</entry>
	<entry>
		<id>http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=9984&amp;oldid=prev</id>
		<title>ru&gt;Carn в 15:37, 21 февраля 2020</title>
		<link rel="alternate" type="text/html" href="http://xn--90aogluj.xn--p1ai/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Calendar&amp;diff=9984&amp;oldid=prev"/>
		<updated>2020-02-21T15:37:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
-- Необходимые модули и переменные&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
local yesno = require('Module:Yesno')&lt;br /&gt;
local err = &amp;quot;―&amp;quot; -- NthDay nil result&lt;br /&gt;
-- 00) Блок многократно используемых списков&lt;br /&gt;
local bool_to_number={ [true]=1, [false]=0 }&lt;br /&gt;
local monthlang = {&amp;quot;января&amp;quot;,&amp;quot;февраля&amp;quot;,&amp;quot;марта&amp;quot;,&amp;quot;апреля&amp;quot;,&amp;quot;мая&amp;quot;,&amp;quot;июня&amp;quot;,&amp;quot;июля&amp;quot;,&amp;quot;августа&amp;quot;,&amp;quot;сентября&amp;quot;,&amp;quot;октября&amp;quot;,&amp;quot;ноября&amp;quot;,&amp;quot;декабря&amp;quot;}&lt;br /&gt;
local monthd = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}&lt;br /&gt;
local params = { {&amp;quot;г&amp;quot;, &amp;quot;g&amp;quot;}, {&amp;quot;ю&amp;quot;, &amp;quot;j&amp;quot;} }&lt;br /&gt;
local comment = { '&amp;lt;span style=&amp;quot;border-bottom: 1px dotted; cursor: help&amp;quot; title=&amp;quot;по юлианскому календарю&amp;quot;&amp;gt;','&amp;lt;/span&amp;gt;'}&lt;br /&gt;
local known_tzs = {&lt;br /&gt;
   ACDT='+10:30', ACST='+09:30', ACT ='+08:00', ADT  ='-03:00', AEDT ='+11:00',&lt;br /&gt;
   AEST='+10:00', AFT ='+04:30', AKDT='-08:00', AKST ='-09:00', AMST ='+05:00',&lt;br /&gt;
   AMT ='+04:00', ART ='-03:00', AST ='+03:00', AST  ='+04:00', AST  ='+03:00',&lt;br /&gt;
   AST ='-04:00', AWDT='+09:00', AWST='+08:00', AZOST='-01:00', AZT  ='+04:00',&lt;br /&gt;
   BDT ='+08:00', BIOT='+06:00', BIT ='-12:00', BOT  ='-04:00', BRT  ='-03:00',&lt;br /&gt;
   BST ='+06:00', BST ='+01:00', BTT ='+06:00', CAT  ='+02:00', CCT  ='+06:30',&lt;br /&gt;
   CDT ='-05:00', CEDT='+02:00', CEST='+02:00', CET  ='+01:00', CHAST='+12:45',&lt;br /&gt;
   CIST='-08:00', CKT ='-10:00', CLST='-03:00', CLT  ='-04:00', COST ='-04:00',&lt;br /&gt;
   COT ='-05:00', CST ='-06:00', CST ='+08:00', CVT  ='-01:00', CXT  ='+07:00',&lt;br /&gt;
   CHST='+10:00', DFT ='+01:00', EAST='-06:00', EAT  ='+03:00', ECT  ='-04:00',&lt;br /&gt;
   ECT ='-05:00', EDT ='-04:00', EEDT='+03:00', EEST ='+03:00', EET  ='+02:00',&lt;br /&gt;
   EST ='-05:00', FJT ='+12:00', FKST='-03:00', FKT  ='-04:00', GALT ='-06:00',&lt;br /&gt;
   GET ='+04:00', GFT ='-03:00', GILT='+12:00', GIT  ='-09:00', GMT  ='+00:00',&lt;br /&gt;
   GST ='-02:00', GYT ='-04:00', HADT='-09:00', HAST ='-10:00', HKT  ='+08:00',&lt;br /&gt;
   HMT ='+05:00', HST ='-10:00', IRKT='+08:00', IRST ='+03:30', IST  ='+05:30',&lt;br /&gt;
   IST ='+01:00', IST ='+02:00', JST ='+09:00', KRAT ='+07:00', KST  ='+09:00',&lt;br /&gt;
   LHST='+10:30', LINT='+14:00', MAGT='+11:00', MDT  ='-06:00', MIT  ='-09:30',&lt;br /&gt;
   MSD ='+04:00', MSK ='+03:00', MST ='+08:00', MST  ='-07:00', MST  ='+06:30',&lt;br /&gt;
   MUT ='+04:00', NDT ='-02:30', NFT ='+11:30', NPT  ='+05:45', NST  ='-03:30',&lt;br /&gt;
   NT  ='-03:30', OMST='+06:00', PDT ='-07:00', PETT ='+12:00', PHOT ='+13:00',&lt;br /&gt;
   PKT ='+05:00', PST ='-08:00', PST ='+08:00', RET  ='+04:00', SAMT ='+04:00',&lt;br /&gt;
   SAST='+02:00', SBT ='+11:00', SCT ='+04:00', SLT  ='+05:30', SST  ='-11:00',&lt;br /&gt;
   SST ='+08:00', TAHT='-10:00', THA ='+07:00', UTC  ='+00:00', UYST ='-02:00',&lt;br /&gt;
   UYT ='-03:00', VET ='-04:30', VLAT='+10:00', WAT  ='+01:00', WEDT ='+01:00',&lt;br /&gt;
   WEST='+01:00', WET ='+00:00', YAKT='+09:00', YEKT ='+05:00', MSK  ='+03:00',&lt;br /&gt;
   -- US Millitary (for RFC-822)&lt;br /&gt;
   Z='+00:00', A='-01:00', M='-12:00', N='+01:00', Y='+12:00',&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local tzs_names = {&amp;quot;ACDT&amp;quot;,&amp;quot;ACST&amp;quot;,&amp;quot;ACT&amp;quot;,&amp;quot;ADT&amp;quot;,&amp;quot;AEDT&amp;quot;,&amp;quot;AEST&amp;quot;,&amp;quot;AFT&amp;quot;,&amp;quot;AKDT&amp;quot;,&amp;quot;AKST&amp;quot;,&lt;br /&gt;
&amp;quot;AMST&amp;quot;,&amp;quot;AMT&amp;quot;,&amp;quot;ART&amp;quot;,&amp;quot;AST&amp;quot;,&amp;quot;AST&amp;quot;,&amp;quot;AST&amp;quot;,&amp;quot;AST&amp;quot;,&amp;quot;AWDT&amp;quot;,&amp;quot;AWST&amp;quot;,&amp;quot;AZOST&amp;quot;,&amp;quot;AZT&amp;quot;,&amp;quot;BDT&amp;quot;,&lt;br /&gt;
&amp;quot;BIOT&amp;quot;,&amp;quot;BIT&amp;quot;,&amp;quot;BOT&amp;quot;,&amp;quot;BRT&amp;quot;,&amp;quot;BST&amp;quot;,&amp;quot;BST&amp;quot;,&amp;quot;BTT&amp;quot;,&amp;quot;CAT&amp;quot;,&amp;quot;CCT&amp;quot;,&amp;quot;CDT&amp;quot;,&amp;quot;CEDT&amp;quot;,&amp;quot;CEST&amp;quot;,&lt;br /&gt;
&amp;quot;CET&amp;quot;,&amp;quot;CHAST&amp;quot;,&amp;quot;CIST&amp;quot;,&amp;quot;CKT&amp;quot;,&amp;quot;CLST&amp;quot;,&amp;quot;CLT&amp;quot;,&amp;quot;COST&amp;quot;,&amp;quot;COT&amp;quot;,&amp;quot;CST&amp;quot;,&amp;quot;CST&amp;quot;,&amp;quot;CVT&amp;quot;,&amp;quot;CXT&amp;quot;,&lt;br /&gt;
&amp;quot;CHST&amp;quot;,&amp;quot;DFT&amp;quot;,&amp;quot;EAST&amp;quot;,&amp;quot;EAT&amp;quot;,&amp;quot;ECT&amp;quot;,&amp;quot;ECT&amp;quot;,&amp;quot;EDT&amp;quot;,&amp;quot;EEDT&amp;quot;,&amp;quot;EEST&amp;quot;,&amp;quot;EET&amp;quot;,&amp;quot;EST&amp;quot;,&amp;quot;FJT&amp;quot;,&lt;br /&gt;
&amp;quot;FKST&amp;quot;,&amp;quot;FKT&amp;quot;,&amp;quot;GALT&amp;quot;,&amp;quot;GET&amp;quot;,&amp;quot;GFT&amp;quot;,&amp;quot;GILT&amp;quot;,&amp;quot;GIT&amp;quot;,&amp;quot;GMT&amp;quot;,&amp;quot;GST&amp;quot;,&amp;quot;GYT&amp;quot;,&amp;quot;HADT&amp;quot;,&amp;quot;HAST&amp;quot;,&lt;br /&gt;
&amp;quot;HKT&amp;quot;,&amp;quot;HMT&amp;quot;,&amp;quot;HST&amp;quot;,&amp;quot;IRKT&amp;quot;,&amp;quot;IRST&amp;quot;,&amp;quot;IST&amp;quot;,&amp;quot;IST&amp;quot;,&amp;quot;IST&amp;quot;,&amp;quot;JST&amp;quot;,&amp;quot;KRAT&amp;quot;,&amp;quot;KST&amp;quot;,&amp;quot;LHST&amp;quot;,&lt;br /&gt;
&amp;quot;LINT&amp;quot;,&amp;quot;MAGT&amp;quot;,&amp;quot;MDT&amp;quot;,&amp;quot;MIT&amp;quot;,&amp;quot;MSD&amp;quot;,&amp;quot;MSK&amp;quot;,&amp;quot;MST&amp;quot;,&amp;quot;MST&amp;quot;,&amp;quot;MST&amp;quot;,&amp;quot;MUT&amp;quot;,&amp;quot;NDT&amp;quot;,&amp;quot;NFT&amp;quot;,&lt;br /&gt;
&amp;quot;NPT&amp;quot;,&amp;quot;NST&amp;quot;,&amp;quot;NT&amp;quot;,&amp;quot;OMST&amp;quot;,&amp;quot;PDT&amp;quot;,&amp;quot;PETT&amp;quot;,&amp;quot;PHOT&amp;quot;,&amp;quot;PKT&amp;quot;,&amp;quot;PST&amp;quot;,&amp;quot;PST&amp;quot;,&amp;quot;RET&amp;quot;,&amp;quot;SAMT&amp;quot;,&lt;br /&gt;
&amp;quot;SAST&amp;quot;,&amp;quot;SBT&amp;quot;,&amp;quot;SCT&amp;quot;,&amp;quot;SLT&amp;quot;,&amp;quot;SST&amp;quot;,&amp;quot;SST&amp;quot;,&amp;quot;TAHT&amp;quot;,&amp;quot;THA&amp;quot;,&amp;quot;UTC&amp;quot;,&amp;quot;UYST&amp;quot;,&amp;quot;UYT&amp;quot;,&amp;quot;VET&amp;quot;,&lt;br /&gt;
&amp;quot;VLAT&amp;quot;,&amp;quot;WAT&amp;quot;,&amp;quot;WEDT&amp;quot;,&amp;quot;WEST&amp;quot;,&amp;quot;WET&amp;quot;,&amp;quot;YAKT&amp;quot;,&amp;quot;YEKT&amp;quot;,&amp;quot;Z&amp;quot;,&amp;quot;A&amp;quot;,&amp;quot;M&amp;quot;,&amp;quot;N&amp;quot;,&amp;quot;Y&amp;quot;,&amp;quot;MSK&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
-- 10) Блок общих функций&lt;br /&gt;
local function trim(str)&lt;br /&gt;
	if not str then return nil&lt;br /&gt;
	else return str:match'^()%s*$' and '' or str:match'^%s*(.*%S)'&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function purif(str)&lt;br /&gt;
    if str == &amp;quot;&amp;quot; or str == nil then&lt;br /&gt;
        return nil&lt;br /&gt;
    elseif type(tonumber(str)) == &amp;quot;number&amp;quot; then&lt;br /&gt;
        return math.floor(tonumber(str))&lt;br /&gt;
    else&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    -- need .5 -- ,5 number format converter?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function is(str)&lt;br /&gt;
	if (not str) or (str == &amp;quot;&amp;quot;) then return false&lt;br /&gt;
	else return yesno(str,false)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function inbord(val, down, up)&lt;br /&gt;
	if type(up) ~= &amp;quot;number&amp;quot; or type(down) ~= &amp;quot;number&amp;quot; or type(val) ~= &amp;quot;number&amp;quot; or up &amp;lt; down or val &amp;lt; down or val &amp;gt; up then&lt;br /&gt;
		return false&lt;br /&gt;
    else&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function shallowcopy(orig)&lt;br /&gt;
    local orig_type = type(orig)&lt;br /&gt;
    local copy&lt;br /&gt;
    if orig_type == 'table' then&lt;br /&gt;
        copy = {}&lt;br /&gt;
        for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
            copy[orig_key] = orig_value&lt;br /&gt;
        end&lt;br /&gt;
    else -- number, string, boolean, etc&lt;br /&gt;
        copy = orig&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local inlist = function ( var, list )&lt;br /&gt;
    local n = #list&lt;br /&gt;
	local inlist = false&lt;br /&gt;
	for i=1,n do&lt;br /&gt;
		if var == list[i] then inlist = true end&lt;br /&gt;
	end&lt;br /&gt;
    return inlist&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 20) Блок общих проверочных функций, связанных с датами&lt;br /&gt;
&lt;br /&gt;
local function leap_year(y,jul)&lt;br /&gt;
	if (not y) or (type(y) ~= &amp;quot;number&amp;quot;)&lt;br /&gt;
		then return false&lt;br /&gt;
	elseif (y % 4) ~= 0&lt;br /&gt;
		then return false&lt;br /&gt;
	elseif not jul and (y % 100 == 0 and y % 400 ~= 0)&lt;br /&gt;
		then return false&lt;br /&gt;
	else return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function isdate ( chain , jul ) -- можно использовать для проверки таблиц с полями day, month, year&lt;br /&gt;
	if not chain then return false&lt;br /&gt;
	elseif (not type(chain) == &amp;quot;table&amp;quot;)&lt;br /&gt;
	or (not inbord(chain.year,-9999,9999))&lt;br /&gt;
	or (not inbord(chain.month,1,12))&lt;br /&gt;
	or (not inbord(chain.day,1,31))&lt;br /&gt;
	or chain.day &amp;gt; monthd[chain.month]&lt;br /&gt;
--	or chain.year == 0&lt;br /&gt;
	then return false&lt;br /&gt;
	elseif chain.month == 2 and chain.day == 29 and not leap_year(chain.year,jul)&lt;br /&gt;
		then return false&lt;br /&gt;
	else return true end&lt;br /&gt;
--  check for other calendars needed?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ispartdate ( chain )&lt;br /&gt;
	if not chain then return false&lt;br /&gt;
	elseif not (type(chain) == &amp;quot;table&amp;quot;) then return false&lt;br /&gt;
	elseif (inbord(chain.year,-9999,9999)&lt;br /&gt;
	and (not inbord(chain.month,1,12))&lt;br /&gt;
	and inbord(chain.day,1,31)) then return false&lt;br /&gt;
	elseif (inbord(chain.year,-9999,9999)&lt;br /&gt;
	or inbord(chain.month,1,12)&lt;br /&gt;
	or inbord(chain.day,1,31)) then return true&lt;br /&gt;
	else return false&lt;br /&gt;
	end&lt;br /&gt;
--	partial date&lt;br /&gt;
--  more detailed check for 31.02.0000 needed&lt;br /&gt;
--  check for other calendars needed&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 30) Блок функций для обработки ввода-вывода дат&lt;br /&gt;
&lt;br /&gt;
local numstr2date = function(numstr)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
    local dateout = {}&lt;br /&gt;
    for num in string.gmatch(numstr,&amp;quot;(%d+)&amp;quot;) do&lt;br /&gt;
        table.insert(nums,purif(num))&lt;br /&gt;
    end&lt;br /&gt;
    if #nums ~= 3 then error(&amp;quot;В поле даты вместо трёх чисел с разделителями указано &amp;quot; .. #nums)&lt;br /&gt;
    elseif not inbord(nums[2],1,12) then error(&amp;quot;Месяц с номером &amp;quot; .. nums[2] .. &amp;quot; не найден&amp;quot;)&lt;br /&gt;
    elseif not inbord(nums[3],1,31) then&lt;br /&gt;
        dateout = {[&amp;quot;year&amp;quot;]=nums[3], [&amp;quot;month&amp;quot;]=nums[2], [&amp;quot;day&amp;quot;]=nums[1]}&lt;br /&gt;
    elseif not inbord(nums[1],1,31) then&lt;br /&gt;
        dateout = {[&amp;quot;year&amp;quot;]=nums[1], [&amp;quot;month&amp;quot;]=nums[2], [&amp;quot;day&amp;quot;]=nums[3]}&lt;br /&gt;
    elseif inbord(nums[1],1,31) then&lt;br /&gt;
        dateout = {[&amp;quot;year&amp;quot;]=nums[3], [&amp;quot;month&amp;quot;]=nums[2], [&amp;quot;day&amp;quot;]=nums[1]}&lt;br /&gt;
    else&lt;br /&gt;
--		local lang = mw.getContentLanguage()&lt;br /&gt;
--		implement lang:formatDate(format,datein,true) here&lt;br /&gt;
        return error(&amp;quot;Не распознано &amp;quot; .. numstr .. &amp;quot; как дата&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return dateout&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function year2lang(numyear,yearmark,wiki)&lt;br /&gt;
	if not numyear then return &amp;quot;&amp;quot; end&lt;br /&gt;
	if not yearmark then yearmark = &amp;quot;&amp;quot; end&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
	local bcmark = &amp;quot; до н. э.&amp;quot;&lt;br /&gt;
	if numyear &amp;gt; 0 then	bcmark = &amp;quot;&amp;quot;&lt;br /&gt;
	else numyear = 1 - numyear end&lt;br /&gt;
	if wiki then &lt;br /&gt;
--		output = table.concat({'[[', numyear,' год',bcmark,'|', numyear,']]', &amp;quot; &amp;quot;, yearmark, &amp;quot; &amp;quot;, bcmark})&lt;br /&gt;
		output = table.concat({'[[', numyear,' год',bcmark,'|', trim(numyear .. &amp;quot; &amp;quot; .. yearmark .. &amp;quot; &amp;quot; .. bcmark), ']]'})&lt;br /&gt;
	else&lt;br /&gt;
		output = table.concat({numyear, &amp;quot; &amp;quot;, yearmark, bcmark})&lt;br /&gt;
	end&lt;br /&gt;
	return trim(output)&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
local function day2lang(datein,wikidate,wiki,inner_brt)&lt;br /&gt;
--	if not isdate(wikidate) then wiki = false end&lt;br /&gt;
	if not ispartdate(datein) then return &amp;quot;&amp;quot; end&lt;br /&gt;
	local dm_separ, output = &amp;quot;&amp;quot;&lt;br /&gt;
	if (not (not datein.day)) and (not (not datein.month)) then dm_separ = &amp;quot; &amp;quot; end&lt;br /&gt;
	if (not datein.month) then datein.month = &amp;quot;&amp;quot; end&lt;br /&gt;
	if (not datein.day) then datein.day = &amp;quot;&amp;quot; end&lt;br /&gt;
	local monlan = monthlang[datein.month] or &amp;quot;&amp;quot;&lt;br /&gt;
	if wiki and not inner_brt then&lt;br /&gt;
		output = table.concat({&amp;quot;[[&amp;quot;, wikidate.day, &amp;quot; &amp;quot;, monthlang[wikidate.month] or &amp;quot;&amp;quot;,&lt;br /&gt;
			&amp;quot;|&amp;quot;, (datein.day or &amp;quot;&amp;quot;), dm_separ, monlan, &amp;quot;]]&amp;quot;})&lt;br /&gt;
	elseif wiki then&lt;br /&gt;
		output = table.concat({&amp;quot;[[&amp;quot;, wikidate.day, &amp;quot; &amp;quot;, monthlang[wikidate.month] or &amp;quot;&amp;quot;,&lt;br /&gt;
			&amp;quot;|&amp;quot;, (datein.day or &amp;quot;&amp;quot;), dm_separ, monlan})&lt;br /&gt;
	else&lt;br /&gt;
		output = table.concat({datein.day, dm_separ, monlan})&lt;br /&gt;
	end&lt;br /&gt;
    return trim(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- добавить отображение без года&lt;br /&gt;
local function double_couple(jdate, gdate, wd, wm, wy, sq_brts, yearmark)&lt;br /&gt;
	local cd = {}&lt;br /&gt;
	local jd = shallowcopy(jdate)&lt;br /&gt;
	local gd = shallowcopy(gdate)&lt;br /&gt;
	local left = &amp;quot;(&amp;quot;&lt;br /&gt;
	local right = &amp;quot;)&amp;quot;&lt;br /&gt;
	if sq_brts then &lt;br /&gt;
		left = &amp;quot;&amp;amp;#091;&amp;quot;&lt;br /&gt;
		right = &amp;quot;&amp;amp;#093;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if (not isdate(jdate,true)) then return error((jdate.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (jdate.month or &amp;quot;&amp;quot;) ..&amp;quot;.&amp;quot; .. (jdate.year or &amp;quot;&amp;quot;) .. &amp;quot; неподходящая дата&amp;quot;) &lt;br /&gt;
	elseif (not isdate(gdate)) then return error((gdate.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (gdate.month or &amp;quot;&amp;quot;) ..&amp;quot;.&amp;quot; .. (gdate.year or &amp;quot;&amp;quot;) .. &amp;quot; неподходящая дата&amp;quot;) end&lt;br /&gt;
	if jd.year == gd.year then&lt;br /&gt;
		cd.year = gd.year&lt;br /&gt;
		gd.year, jd.year = nil&lt;br /&gt;
	end&lt;br /&gt;
	if jd.month == gd.month then&lt;br /&gt;
		cd.month = gd.month&lt;br /&gt;
		gd.month, jd.month = nil&lt;br /&gt;
	end	&lt;br /&gt;
	if (not not cd.month) and wm then &lt;br /&gt;
		return table.concat({comment[1] .. trim(day2lang(jd,jdate,false) .. &amp;quot; &amp;quot; .. year2lang(jd.year,yearmark,false)) .. comment[2], &lt;br /&gt;
		trim(left .. day2lang(gd,gdate,wd,wm) .. &amp;quot; &amp;quot; .. year2lang(gd.year,yearmark,wy)) .. right, &lt;br /&gt;
		day2lang(cd,gdate,false) .. &amp;quot;]]&amp;quot;, trim(year2lang(cd.year,yearmark,wy))}, &amp;quot; &amp;quot;)&lt;br /&gt;
	end &lt;br /&gt;
	return table.concat({comment[1] .. trim(day2lang(jd,jdate,false) .. &amp;quot; &amp;quot; .. year2lang(jd.year,yearmark,false)) .. comment[2], &lt;br /&gt;
		trim(left .. day2lang(gd,gdate,wd) .. &amp;quot; &amp;quot; .. year2lang(gd.year,yearmark,wy)) .. right, &lt;br /&gt;
		trim(day2lang(cd,gdate,false)), trim(year2lang(cd.year,yearmark,wy))}, &amp;quot; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 40) Блок функций для перевода дат с использованием [[Юлианская дата]]&lt;br /&gt;
&lt;br /&gt;
function gri2jd( datein )&lt;br /&gt;
	if not isdate(datein) then return error((datein.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (datein.month or &amp;quot;&amp;quot;) ..&amp;quot;.&amp;quot; .. (datein.year or &amp;quot;&amp;quot;) .. &amp;quot; неподходящая дата&amp;quot;) end&lt;br /&gt;
    local year = datein.year&lt;br /&gt;
    local month = datein.month&lt;br /&gt;
    local day = datein.day&lt;br /&gt;
    -- jd calculation&lt;br /&gt;
    local a = math.floor((14 - month)/12)&lt;br /&gt;
    local y = year + 4800 - a&lt;br /&gt;
    local m = month + 12*a - 3&lt;br /&gt;
    local offset = math.floor(y/4) - math.floor(y/100) + math.floor(y/400) - 32045&lt;br /&gt;
    local jd = day + math.floor((153*m + 2)/5) + 365*y + offset&lt;br /&gt;
    -- jd validation&lt;br /&gt;
    local low, high = -1931076.5, 5373557.49999&lt;br /&gt;
    if not (low &amp;lt;= jd and jd &amp;lt;= high) then&lt;br /&gt;
        return error((datein.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (datein.month or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (datein.year or &amp;quot;&amp;quot;) .. &amp;quot; выходит за пределы разрешённого диапазона&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
	return jd&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function jd2jul( jd )&lt;br /&gt;
	if type(jd) ~= &amp;quot;number&amp;quot; then return error(&amp;quot;Промежуточная переменная &amp;quot; .. (jd or &amp;quot;&amp;quot;) .. &amp;quot; не является числом&amp;quot;) end&lt;br /&gt;
    -- calendar date calculation&lt;br /&gt;
    local c = jd + 32082&lt;br /&gt;
    local d = math.floor((4*c + 3)/1461)&lt;br /&gt;
    local e = c - math.floor(1461*d/4)&lt;br /&gt;
    local m = math.floor((5*e + 2)/153)&lt;br /&gt;
    local year_out = d - 4800 + math.floor(m/10)&lt;br /&gt;
    local month_out = m + 3 - 12*math.floor(m/10)&lt;br /&gt;
    local day_out = e - math.floor((153*m + 2)/5) + 1&lt;br /&gt;
    -- output&lt;br /&gt;
    local dateout = {[&amp;quot;year&amp;quot;]=year_out, [&amp;quot;month&amp;quot;]=month_out, [&amp;quot;day&amp;quot;]=day_out}&lt;br /&gt;
    return dateout&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function jul2jd( datein )&lt;br /&gt;
	if not isdate(datein,true) then return error((datein.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (datein.month or &amp;quot;&amp;quot;) ..&amp;quot;.&amp;quot;.. (datein.year or &amp;quot;&amp;quot;) .. &amp;quot; неподходящая дата&amp;quot;) end&lt;br /&gt;
    local year = datein.year&lt;br /&gt;
    local month = datein.month&lt;br /&gt;
    local day = datein.day&lt;br /&gt;
    -- jd calculation&lt;br /&gt;
    local a = math.floor((14 - month)/12)&lt;br /&gt;
    local y = year + 4800 - a&lt;br /&gt;
    local m = month + 12*a - 3&lt;br /&gt;
    local offset = math.floor(y/4) - 32083&lt;br /&gt;
    local jd = day + math.floor((153*m + 2)/5) + 365*y + offset&lt;br /&gt;
    -- jd validation&lt;br /&gt;
    local low, high = -1930999.5, 5373484.49999&lt;br /&gt;
    if not (low &amp;lt;= jd and jd &amp;lt;= high) then&lt;br /&gt;
        return error((datein.day or &amp;quot;&amp;quot;) .. &amp;quot;.&amp;quot; .. (datein.month or &amp;quot;&amp;quot;) ..&amp;quot;.&amp;quot; .. (datein.year or &amp;quot;&amp;quot;) .. &amp;quot; выходит за пределы разрешённого диапазона&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
	return jd&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function jd2gri( jd )&lt;br /&gt;
	if type(jd) ~= &amp;quot;number&amp;quot; then return error(&amp;quot;Промежуточная переменная &amp;quot; .. (jd or &amp;quot;&amp;quot;) .. &amp;quot; не является числом&amp;quot;) end&lt;br /&gt;
    -- calendar date calculation&lt;br /&gt;
    local a = jd + 32044&lt;br /&gt;
    local b = math.floor((4*a + 3) / 146097)&lt;br /&gt;
    local c = a - math.floor(146097*b/4)&lt;br /&gt;
    local d = math.floor((4*c+3)/1461)&lt;br /&gt;
    local e = c - math.floor(1461*d/4)&lt;br /&gt;
    local m = math.floor((5*e+2)/153)&lt;br /&gt;
    local day_out =  e - math.floor((153*m+2)/5)+1&lt;br /&gt;
    local month_out = m + 3 - 12*math.floor(m/10)&lt;br /&gt;
    local year_out = 100*b + d - 4800 + math.floor(m/10)&lt;br /&gt;
    -- output&lt;br /&gt;
    local dateout = {[&amp;quot;year&amp;quot;]=year_out, [&amp;quot;month&amp;quot;]=month_out, [&amp;quot;day&amp;quot;]=day_out}&lt;br /&gt;
    return dateout&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function astroyear(num, bc)&lt;br /&gt;
	if not num then return error()&lt;br /&gt;
	elseif type(num) ~= &amp;quot;number&amp;quot; then return error()&lt;br /&gt;
	end&lt;br /&gt;
	if num &amp;lt; 1 then return num end&lt;br /&gt;
	if not bc then return num&lt;br /&gt;
	else return 1 - num&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function recalc(datein,calend)&lt;br /&gt;
	if inlist(calend,params[1]) then &lt;br /&gt;
		return jd2jul(gri2jd(datein)), datein&lt;br /&gt;
   	elseif inlist(calend,params[2]) then&lt;br /&gt;
		return datein, jd2gri(jul2jd(datein))&lt;br /&gt;
   	else error(&amp;quot;Параметр &amp;quot; .. (calend or &amp;quot;&amp;quot;) .. &amp;quot; не опознан, разрешённые: &amp;quot; .. table.concat(params[1],&amp;quot; &amp;quot;) .. &amp;quot; и &amp;quot; .. table.concat(params[2],&amp;quot; &amp;quot;))&lt;br /&gt;
   	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 50) Функции для обработки UTC&lt;br /&gt;
&lt;br /&gt;
local function utc(str,margin)&lt;br /&gt;
	local d = 1&lt;br /&gt;
	local dchar = &amp;quot;+&amp;quot;&lt;br /&gt;
	local beginning = &amp;quot;[[UTC&amp;quot;&lt;br /&gt;
	local ending = &amp;quot;]]&amp;quot;&lt;br /&gt;
	local cat = &amp;quot;&amp;quot;&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	local hmarg, timedec = 0&lt;br /&gt;
	local mmarg = &amp;quot;00&amp;quot;&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
-- checking type of input&lt;br /&gt;
	if not margin then margin = 0&lt;br /&gt;
	elseif type(tonumber(margin)) ~= 'number' then&lt;br /&gt;
		output = &amp;quot;Can't shift by &amp;quot; .. margin&lt;br /&gt;
		error(output)&lt;br /&gt;
	end&lt;br /&gt;
	if type(str) ~= 'string' then&lt;br /&gt;
		error(&amp;quot;Нет входящей строки&amp;quot;)&lt;br /&gt;
	elseif str:byte(1) == 43 then&lt;br /&gt;
	elseif inbord(str:byte(1),48,57) then cat = &amp;quot;[[Категория:Википедия:Ошибка в часовом поясе НП]]&amp;quot;&lt;br /&gt;
	elseif str:byte(1) == 45 or string.sub(str,1,3) == &amp;quot;−&amp;quot; or string.sub(str,1,1)==&amp;quot;-&amp;quot; then d = -1&lt;br /&gt;
	else&lt;br /&gt;
		error(string.char(str:byte(1)) .. &amp;quot; недопустимый первый символ&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
-- parsing input&lt;br /&gt;
	for num in string.gmatch(str,&amp;quot;(%d+)&amp;quot;) do&lt;br /&gt;
        table.insert(nums,purif(num))&lt;br /&gt;
    end&lt;br /&gt;
	if #nums &amp;gt; 2 then error(&amp;quot;Ожидается всего 2 числа, а не &amp;quot; .. #nums)&lt;br /&gt;
	elseif #nums == 0 then error(&amp;quot;Необходимо что-то ввести&amp;quot;)&lt;br /&gt;
	elseif #nums == 1 then&lt;br /&gt;
		if inbord(nums[1],0,14) then timedec = d*nums[1] + margin&lt;br /&gt;
		else error(&amp;quot;Только часы от -14 до 14&amp;quot;) end&lt;br /&gt;
	elseif #nums == 2 then&lt;br /&gt;
		if not inbord(nums[1],0,14) then error(&amp;quot;Только часы от -14 до 14&amp;quot;)&lt;br /&gt;
		elseif not inbord(nums[2],0,59) then error(&amp;quot;Минуты только от 0 до 59&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			timedec = d*(nums[1] + nums[2]/60) + margin&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if tonumber(timedec) == purif(timedec) then hmarg = timedec&lt;br /&gt;
	else&lt;br /&gt;
		local h, m = math.modf(math.abs(timedec))&lt;br /&gt;
		hmarg = h&lt;br /&gt;
		mmarg = math.floor(m*60)&lt;br /&gt;
	end&lt;br /&gt;
	if timedec == 0 then&lt;br /&gt;
		dchar = &amp;quot;±&amp;quot;&lt;br /&gt;
	elseif timedec &amp;gt; 0 then&lt;br /&gt;
	elseif timedec &amp;lt; 0 then&lt;br /&gt;
		dchar = &amp;quot;&amp;amp;minus;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
-- output&lt;br /&gt;
	output = beginning .. dchar .. math.abs(hmarg) .. &amp;quot;:&amp;quot; .. string.format(&amp;quot;%02d&amp;quot;,mmarg) .. ending .. cat&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 60) Блок функций ввода-вывода&lt;br /&gt;
&lt;br /&gt;
function p.NthDay( frame )&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    local num, wday, mont, yea, format = &lt;br /&gt;
    	purif(args[1]), purif(args[2]), purif(args[3]), purif(args[4]), args[5]&lt;br /&gt;
	if not format then format = &amp;quot;%d.%m.%y&amp;quot; end&lt;br /&gt;
    if not inbord(num,-5,5) then &lt;br /&gt;
    	return error(&amp;quot;The number must be between -5 and 5&amp;quot;)&lt;br /&gt;
    elseif num == 0 then &lt;br /&gt;
    	return error(&amp;quot;The number must not be zero&amp;quot;) end&lt;br /&gt;
    if not inbord(wday,0,6) then &lt;br /&gt;
    	return error(&amp;quot;The day of the week must be between 0 and 6&amp;quot;) end&lt;br /&gt;
    if not inbord(mont,1,12) then &lt;br /&gt;
    	return error(&amp;quot;The month must be between 1 and 12&amp;quot;) end&lt;br /&gt;
    if not inbord(yea,0,9999) then &lt;br /&gt;
    	return error(&amp;quot;Wrong year number&amp;quot;) end&lt;br /&gt;
    if inbord(num,1,5) then&lt;br /&gt;
        local m_start = os.time{year=yea, month=mont, day=1, hour=0}&lt;br /&gt;
        local m_wds = tonumber(os.date(&amp;quot;%w&amp;quot;, m_start)) &lt;br /&gt;
        local start_shift = (&lt;br /&gt;
            (num - bool_to_number[wday &amp;gt;= m_wds]) * 7 &lt;br /&gt;
            - (m_wds - wday)&lt;br /&gt;
            ) * 24 * 60 * 60&lt;br /&gt;
        local tim = m_start + start_shift&lt;br /&gt;
        if tonumber(os.date(&amp;quot;%m&amp;quot;, tim)) == mont then&lt;br /&gt;
            return (os.date(format, tim))&lt;br /&gt;
        else&lt;br /&gt;
            return (err)&lt;br /&gt;
        end&lt;br /&gt;
    elseif inbord(num,-5,-1) then&lt;br /&gt;
        local m_end = os.time{year = yea, month = mont + 1, day = 1, hour = 0} - 24 * 60 * 60&lt;br /&gt;
        local m_wde = tonumber(os.date(&amp;quot;%w&amp;quot;, m_end))&lt;br /&gt;
        local end_shift = ((math.abs(num + 1) + bool_to_number[wday &amp;gt; m_wde]) * 7 &lt;br /&gt;
            + (m_wde - wday)) * 24 * 60 * 60&lt;br /&gt;
        local tim = m_end - end_shift&lt;br /&gt;
        if tonumber(os.date(&amp;quot;%m&amp;quot;, tim)) == mont then&lt;br /&gt;
            return (os.date(format, tim))&lt;br /&gt;
        else&lt;br /&gt;
            return (err)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ToIso( frame ) -- возможно неиспользуемая&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    local datein = args[1]&lt;br /&gt;
    -- парсинг входящей даты по шаблону&lt;br /&gt;
    local pattern = &amp;quot;(%d+)%.(%d+)%.(%d+)&amp;quot;&lt;br /&gt;
    local dayin, monthin, yearin = datein:match(pattern)&lt;br /&gt;
    local year = tonumber(yearin)&lt;br /&gt;
    local month = tonumber(monthin)&lt;br /&gt;
    local day = tonumber(dayin)&lt;br /&gt;
    -- проверка параметров&lt;br /&gt;
    if not (type(year) == 'number') then &lt;br /&gt;
        return error(&amp;quot;Wrong year&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if not (1 &amp;lt;= month and month &amp;lt;= 12) then &lt;br /&gt;
        return error(&amp;quot;Wrong month&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if not (1 &amp;lt;= day and day &amp;lt;= 31) then &lt;br /&gt;
        return error(&amp;quot;Wrong day&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    local timedate = os.time{year=year, month=month, day=day}&lt;br /&gt;
    local date = os.date(&amp;quot;%Y-%m-%d&amp;quot;, timedate)&lt;br /&gt;
    return date&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ToDate( frame ) -- возможно неиспользуемая&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    local lang = mw.getContentLanguage()&lt;br /&gt;
    local datein = args[1]&lt;br /&gt;
    local format = &amp;quot;j xg Y&amp;quot;&lt;br /&gt;
    if not string.match(datein, &amp;quot;%p&amp;quot;) then return datein&lt;br /&gt;
    elseif not args[2] then&lt;br /&gt;
    else format = args[2]&lt;br /&gt;
    end&lt;br /&gt;
    return lang:formatDate(format,datein,true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =p.unitime(mw.getCurrentFrame():newChild{title=&amp;quot;smth&amp;quot;,args={&amp;quot;−1:30&amp;quot;,&amp;quot;1&amp;quot;}})&lt;br /&gt;
&lt;br /&gt;
function p.unitime( frame )&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    local DST = 0&lt;br /&gt;
    if not args[2] then &lt;br /&gt;
    else DST = 1 end&lt;br /&gt;
    local utcin = &amp;quot;&amp;quot;&lt;br /&gt;
    local input = args[1]&lt;br /&gt;
    if not input then return &amp;quot;&amp;quot; end&lt;br /&gt;
    if inlist(input:upper(),tzs_names) then &lt;br /&gt;
    	utcin = known_tzs[input:upper()] &lt;br /&gt;
    elseif (string.sub(input:upper(),1,3) == 'UTC') and (string.len(input) &amp;lt; 10) then&lt;br /&gt;
    	utcin = string.sub(input,4)&lt;br /&gt;
    else &lt;br /&gt;
    	if string.sub(input,1,1) == '[' &lt;br /&gt;
        or string.sub(input,1,1) == '{' &lt;br /&gt;
        or string.sub(input,1,1):upper() == 'U' &lt;br /&gt;
        or string.sub(input,1,1):upper() == 'M' then&lt;br /&gt;
    	    return input &lt;br /&gt;
--      elseif not string.find(string.upper(string.sub(input,1,1)),&amp;quot;[\65-\90]&amp;quot;) or&lt;br /&gt;
--      not string.find(string.upper(string.sub(input,1,1)),&amp;quot;[\192-\223]&amp;quot;) then&lt;br /&gt;
--    	return input&lt;br /&gt;
    	else utcin = input end &lt;br /&gt;
    end&lt;br /&gt;
--  elseif string.sub(input,1,3) ~= &amp;quot;−&amp;quot; then utcin = input&lt;br /&gt;
--  or not (not input:find(&amp;quot;[А-я]&amp;quot;)) при наличии в строке юникода не работает&lt;br /&gt;
    local output = &amp;quot;&amp;quot;&lt;br /&gt;
    if DST == 0 then output = utc(utcin)&lt;br /&gt;
    else output = utc(utcin) .. &amp;quot;, [[летнее время|летом]] &amp;quot; .. utc(utcin,DST)&lt;br /&gt;
    end&lt;br /&gt;
    return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- добавить различные типы викификации одним str аргументом&lt;br /&gt;
--  =p.OldDate(mw.getCurrentFrame():newChild{title=&amp;quot;smth&amp;quot;,args={&amp;quot;29.02.2100&amp;quot;,&amp;quot;ю&amp;quot;,[&amp;quot;bc&amp;quot;]=&amp;quot;0&amp;quot;,[&amp;quot;wd&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;wy&amp;quot;]=&amp;quot;0&amp;quot;,[&amp;quot;sq_brts&amp;quot;]=&amp;quot;0&amp;quot;}})&lt;br /&gt;
-- =p.OldDate(mw.getCurrentFrame():newChild{title=&amp;quot;smth&amp;quot;,args={&amp;quot;20.02.2020&amp;quot;,&amp;quot;ю&amp;quot;,[&amp;quot;bc&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;wd&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;wy&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;sq_brts&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;yearmark&amp;quot;]=&amp;quot;г.&amp;quot;}})&lt;br /&gt;
-- function p.formatWikiImpl( t1, t2, infocardClass, categoryNamePrefix, brts )&lt;br /&gt;
function p.OldDate( frame )&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    if not args[1] then return err end&lt;br /&gt;
    local gdate, jdate = {}&lt;br /&gt;
    local strin = args[1] &lt;br /&gt;
    local cal = args[2]:lower() or &amp;quot;г&amp;quot;&lt;br /&gt;
    local bc = is(args[&amp;quot;bc&amp;quot;])&lt;br /&gt;
    local wd = is(args[&amp;quot;wd&amp;quot;])&lt;br /&gt;
    local wm = is(args[&amp;quot;wm&amp;quot;])&lt;br /&gt;
    local wy = is(args[&amp;quot;wy&amp;quot;])&lt;br /&gt;
    if not wd then wm = false end&lt;br /&gt;
    local sq_brts = is(args[&amp;quot;sq_brts&amp;quot;])&lt;br /&gt;
    local yearmark = &amp;quot;года&amp;quot;&lt;br /&gt;
    if yesno(args[&amp;quot;yearmark&amp;quot;]) then&lt;br /&gt;
    elseif yesno(args[&amp;quot;yearmark&amp;quot;]) == false then yearmark = &amp;quot;&amp;quot;&lt;br /&gt;
    else yearmark = trim(args[&amp;quot;yearmark&amp;quot;]) or &amp;quot;года&amp;quot; end&lt;br /&gt;
--  local infocard = is(args[&amp;quot;infocard&amp;quot;])&lt;br /&gt;
--  local catName = args[&amp;quot;catName&amp;quot;] or false&lt;br /&gt;
    local datein = numstr2date(strin)&lt;br /&gt;
    datein.year = astroyear(datein.year, bc)&lt;br /&gt;
    jdate, gdate = recalc(datein,cal)&lt;br /&gt;
	return double_couple(jdate, gdate, wd, wm, wy, sq_brts, yearmark)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =p.NewDate(mw.getCurrentFrame():newChild{title=&amp;quot;smth&amp;quot;,args={&amp;quot;20.02.2020&amp;quot;,[&amp;quot;bc&amp;quot;]=&amp;quot;0&amp;quot;,[&amp;quot;wd&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;wy&amp;quot;]=&amp;quot;1&amp;quot;,[&amp;quot;sq_brts&amp;quot;]=&amp;quot;0&amp;quot;,[&amp;quot;yearmark&amp;quot;]=&amp;quot;&amp;quot;}})&lt;br /&gt;
function p.NewDate( frame )&lt;br /&gt;
    local args = getArgs(frame, { frameOnly = true })&lt;br /&gt;
    if not args[1] then return err end&lt;br /&gt;
	local strin = args[1] &lt;br /&gt;
    local year, month, day&lt;br /&gt;
    if     not not strin:match( &amp;quot;(-?%d%d%d%d)-(%d%d)-(%d%d)&amp;quot; ) then&lt;br /&gt;
    	year, month, day = strin:match( &amp;quot;(-?%d%d%d%d)-(%d%d)-(%d%d)&amp;quot; )&lt;br /&gt;
    elseif not not strin:match( &amp;quot;(-?%d+)-(%d+)-(%d+)&amp;quot; ) then&lt;br /&gt;
    	year, month, day = strin:match( &amp;quot;(-?%d+)-(%d+)-(%d+)&amp;quot; )&lt;br /&gt;
    elseif not not strin:match( &amp;quot;(%d%d)%.(%d%d)%.(-?%d%d%d%d)&amp;quot; ) then&lt;br /&gt;
    	day, month, year = strin:match( &amp;quot;(%d%d)%.(%d%d)%.(-?%d%d%d%d)&amp;quot; )&lt;br /&gt;
    elseif not not strin:match( &amp;quot;(%d+)%.(%d+)%.(-?%d+)&amp;quot; ) then&lt;br /&gt;
    	day, month, year = strin:match( &amp;quot;(%d+)%.(%d+)%.(-?%d+)&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if not year then return error(args[1] .. &amp;quot; не подходит под форматы yyyy-mm-dd или dd.mm.yyyy&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local jdate = {[&amp;quot;year&amp;quot;]=purif(year), [&amp;quot;month&amp;quot;]=purif(month), [&amp;quot;day&amp;quot;]=purif(day)}&lt;br /&gt;
	local gdate = jd2gri(jul2jd(jdate))&lt;br /&gt;
	&lt;br /&gt;
	local bc,wd,wm,wy,sq_brts = &lt;br /&gt;
		is(args[&amp;quot;bc&amp;quot;]),&lt;br /&gt;
		is(args[&amp;quot;wd&amp;quot;]),&lt;br /&gt;
		is(args[&amp;quot;wd&amp;quot;]) and is(args[&amp;quot;wm&amp;quot;]),&lt;br /&gt;
		is(args[&amp;quot;wy&amp;quot;]),&lt;br /&gt;
		is(args[&amp;quot;sq_brts&amp;quot;])&lt;br /&gt;
    &lt;br /&gt;
    local yearmark = &amp;quot;года&amp;quot;&lt;br /&gt;
    local ym = args[&amp;quot;yearmark&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
    if yesno(ym) then&lt;br /&gt;
    elseif yesno(ym) == false then yearmark = &amp;quot;&amp;quot; &lt;br /&gt;
    else&lt;br /&gt;
    	if not not ym:match(&amp;quot;(%d+)&amp;quot;) then &lt;br /&gt;
    		error(&amp;quot;Цифры в обозначении года: &amp;quot; .. ym)&lt;br /&gt;
    	else yearmark = trim(ym) or &amp;quot;года&amp;quot; end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	return double_couple(jdate, gdate, wd, wm, wy, sq_brts, yearmark)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ru&gt;Carn</name></author>
		
	</entry>
</feed>