<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata%2FTestUtils</id>
	<title>Модуль:Wikidata/TestUtils - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata%2FTestUtils"/>
	<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&amp;action=history"/>
	<updated>2026-04-21T04:13:22Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&amp;diff=238425&amp;oldid=prev</id>
		<title>Karaby: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&amp;diff=238425&amp;oldid=prev"/>
		<updated>2025-07-27T15:36:32Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 15:36, 27 июля 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&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;!-- diff cache key wiki:diff:1.41:old-238424:rev-238425 --&gt;
&lt;/table&gt;</summary>
		<author><name>Karaby</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&amp;diff=238424&amp;oldid=prev</id>
		<title>Буквица&gt;QBA-bot: Защитил страницу Модуль:Wikidata/TestUtils: критический шаблон или модуль (каскадная защита) ([Редактирование=только автоподтверждённые] (бессрочно) [Переименование=только автоподтверждённые] (бессрочно))</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&amp;diff=238424&amp;oldid=prev"/>
		<updated>2020-12-04T10:56:55Z</updated>

		<summary type="html">&lt;p&gt;Защитил страницу &lt;a href=&quot;/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata/TestUtils&quot; title=&quot;Модуль:Wikidata/TestUtils&quot;&gt;Модуль:Wikidata/TestUtils&lt;/a&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 function splitISO8601( str )&lt;br /&gt;
	if &amp;#039;table&amp;#039; == type( str ) then&lt;br /&gt;
		if str.args and str.args[1] then&lt;br /&gt;
			str = &amp;#039;&amp;#039; .. str.args[1]&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;unknown argument type: &amp;#039; .. type( str ) .. &amp;#039;: &amp;#039; .. table.tostring( str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local Y, M, D = ( function( str )&lt;br /&gt;
		local pattern = &amp;#039;(%-?%d+)%-(%d+)%-(%d+)T&amp;#039;&lt;br /&gt;
		local Y, M, D = mw.ustring.match( str, pattern )&lt;br /&gt;
		return tonumber( Y ), tonumber( M ), tonumber( D )&lt;br /&gt;
	end )( str );&lt;br /&gt;
	local h, m, s = ( function( str )&lt;br /&gt;
		local pattern = &amp;#039;T(%d+):(%d+):(%d+)%Z&amp;#039;;&lt;br /&gt;
		local H, M, S = mw.ustring.match( str, pattern);&lt;br /&gt;
		return tonumber( H ), tonumber( M ), tonumber( S );&lt;br /&gt;
	end )( str );&lt;br /&gt;
	local oh, om = ( function( str )&lt;br /&gt;
		-- ends with Z, Zulu time&lt;br /&gt;
		if str:sub( -1 ) == &amp;#039;Z&amp;#039; then&lt;br /&gt;
			return 0, 0&lt;br /&gt;
		end;&lt;br /&gt;
		-- matches ±hh:mm, ±hhmm or ±hh; else returns nils&lt;br /&gt;
		local pattern = &amp;#039;([-+])(%d%d):?(%d?%d?)$&amp;#039;;&lt;br /&gt;
		local sign, oh, om = mw.ustring.match( str, pattern );&lt;br /&gt;
		sign, oh, om = sign or &amp;#039;+&amp;#039;, oh or &amp;#039;00&amp;#039;, om or &amp;#039;00&amp;#039;;&lt;br /&gt;
		return tonumber( sign .. oh ), tonumber( sign .. om );&lt;br /&gt;
	end )( str )&lt;br /&gt;
	return {year=Y, month=M, day=D, hour=( h + oh ), min=( m + om ), sec=s};&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitDate( str )&lt;br /&gt;
	local Y, M, D = ( function( str )&lt;br /&gt;
		local pattern = &amp;quot;^(%d+)%-(%d+)%-(%d+)$&amp;quot;&lt;br /&gt;
		local Y, M, D = mw.ustring.match( str, pattern )&lt;br /&gt;
		return tonumber( Y ), tonumber( M ), tonumber( D )&lt;br /&gt;
	end )( str );&lt;br /&gt;
	return { year=Y, month=M, day=D, hour=0, min=0, sec=0 };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parseTimeFromSnak( snak )&lt;br /&gt;
	if ( snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time ) then&lt;br /&gt;
		return tonumber( os.time( splitISO8601( tostring( snak.datavalue.value.time ) ) ) ) * 1000;&lt;br /&gt;
	end&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parseTimeFromDate( datestring )&lt;br /&gt;
	return tonumber( os.time( splitDate( datestring ) ) ) * 1000&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Буквица&gt;QBA-bot</name></author>
	</entry>
</feed>