Подробности записи журнала 1 662 339

23:03, 26 ноября 2014: 26 «Спам ссылками» Dallefeste (обсуждение | вклад) на странице UNIX-время, меры: Предупреждение (просмотреть)

Изменения, сделанные в правке

== Ссылки ==
== Ссылки ==
* [http://unixtime.info Конвертер UNIX-времени]
* [http://unixtime.info Конвертер UNIX-времени]
* [http://www.unixtime.it/ru/ Конвертер Unix time многоязычный]
[[Категория:Календарь]]
[[Категория:Календарь]]
[[Категория:UNIX]]
[[Категория:UNIX]]

Параметры действия

ПеременнаяЗначение
Число правок участника (user_editcount)
0
Имя учётной записи (user_name)
'Dallefeste'
Группы (включая неявные) в которых состоит участник (user_groups)
[ 0 => '*', 1 => 'user' ]
Редактирует ли участник через мобильный интерфейс (user_mobile)
false
ID страницы (page_id)
26928
Пространство имён страницы (page_namespace)
0
Название страницы (без пространства имён) (page_title)
'UNIX-время'
Полное название страницы (page_prefixedtitle)
'UNIX-время'
Последние десять редакторов страницы (page_recent_contributors)
[ 0 => '145.255.6.206', 1 => '178.172.232.203', 2 => '176.212.49.186', 3 => 'ASDFS', 4 => '91.216.173.29', 5 => 'SergV', 6 => '95.221.221.198', 7 => '46.211.128.120', 8 => '94.181.46.58', 9 => '46.211.127.239' ]
Действие (action)
'edit'
Описание правки/причина (summary)
'/* Ссылки */ '
Была ли правка отмечена как «малое изменение» (больше не используется) (minor_edit)
true
Вики-текст старой страницы до правки (old_wikitext)
'{{эта статья|о формате кодирования времени|time (Unix)|об утилите}} '''UNIX-время''' ({{lang-en|Unix time}}) или '''POSIX-время''' — система описания моментов во времени, принятая в [[UNIX]] и других [[POSIX]]-совместимых [[операционная система|операционных системах]]. Определяется как количество секунд, прошедших с [[полночь|полуночи]] (00:00:00 [[Всемирное координированное время|UTC]]) [[1 января]] [[1970 год]]а (четверг); время с этого момента называют «эрой UNIX» ({{lang-en|Unix Epoch}}). Время UNIX согласуется с UTC — в частности, при объявлении [[секунда координации|високосных секунд]] UTC соответствующие номера секунд повторяются, то есть високосные секунды не учитываются. Представление времени в виде количества секунд удобно использовать для сравнения и хранения дат (дата и время в этом формате занимают всего 4 или 8 [[октет (информатика)|байтов]]). При необходимости обращения к элементам дат (день, месяц, год) секунды можно преобразовать в любой подходящий формат (и наоборот), но если такие преобразования выполняются часто, они снижают производительность. В программах для хранения UNIX-времени используется [[Целое (тип данных)#Целые со знаком|целочисленный знаковый тип]]. Знаковость упрощает вычисление разницы в секундах между двумя моментами времени, которая может быть отрицательной. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно. Чтобы узнать текущее UNIX-время в большинстве UNIX-подобных систем, можно использовать команду <code>[[date]] +%s</code>. == «Юбилейные» значения == <!-- Проверено User:ASDFS 22.06.2014 --> {| class="wikitable" ! Время || Количество секунд |- |align="right"| [[13 декабря]] [[1901 год]]а, 20:45:52 [[UTC]] || Минимальная дата в знаковом 32-бит представлении (0x80000000) |- |align="right"| [[19 января]] [[2038 год]]а, 03:14:07 [[UTC]] || Максимальная дата в знаковом 32-бит представлении (0x7FFFFFFF) |- |align="right"| [[9 сентября]] [[2001 год]]а, 01:46:40 [[UTC]] || [[Миллиард|1&nbsp;000&nbsp;000&nbsp;000]] (1 [[гига]]секунда) |- |align="right"| [[10 января]] [[2004 год]]а, 13:37:04 [[UTC]] || [[1 073 741 824 (число)|1&nbsp;073&nbsp;741&nbsp;824]]=2<sup>30</sup> (1 [[гиби]]секунда) |- |align="right"| [[18 марта]] [[2005 год]]а, 01:58:31 [[UTC]] || [[1 111 111 111 (число)|1&nbsp;111&nbsp;111&nbsp;111]] |- |align="right" | [[6 сентября]] [[2008 год]]а 12:12:05 [[UTС]] || [[1 220 703 125 (число)|1 220 703 125]] = 5<sup>13</sup> |- |align="right"| [[13 февраля]] [[2009 год]]а, 23:31:30 [[UTC]] || [[1 234 567 890 (число)|1&nbsp;234&nbsp;567&nbsp;890]] |- |align="right"| [[24 октября]] [[2014 год]]а, 09:03:34 [[UTC]] || [[1 414 141 414 (число)|14 14 14 14 14]] |} == Проблема 2038 == {{main|Проблема 2038 года}} [[19 января]] [[2038 год]]а в 03:14:08 по всемирному времени значение [[переменная (программирование)|переменной]] типа <code>time_t</code>, отсчитывающей число [[секунда|секунд]], прошедших с [[1 января]] [[1970 год]]а, достигнет 2<sup>31</sup>, что может привести к ошибочной интерпретации этого числа как [[Дополнительный код (представление числа)|отрицательного]]. Возможное решение данной проблемы состоит в использовании для хранения времени не 32-[[бит]]ной, а 64-битной переменной (что и делается во всех современных 64-битных операционных системах), этого хватит на 292 млрд лет. == Программная конвертация == Приводится пример реализации на языке [[Си (язык программирования)|Си]] функций конвертации между UNIX-временем и обычным представлением в виде даты и времени суток. Пример приведен в стандартном знаковом 32-бит формате. Однако, закомментировав определение _XT_SIGNED, пример соберется в беззнаковом варианте. <!-- Проверено User:ASDFS 22.06.2014 --> {{Hider hiding|title=Конвертация времени, заголовочный файл|content= <source lang="c"> typedef unsigned short u16_t; typedef unsigned long u32_t; typedef signed short s16_t; typedef signed long s32_t; // DEF: standard signed format // UNDEF: non-standard unsigned format #define _XT_SIGNED #ifdef _XT_SIGNED typedef s32_t xtime_t; #else typedef u32_t xtime_t; #endif struct tm { /* date and time components */ BYTE tm_sec; BYTE tm_min; BYTE tm_hour; BYTE tm_mday; BYTE tm_mon; u16_t tm_year; }; void xttotm(struct tm *t, xtime_t secs); xtime_t xtmtot(struct tm *t); </source>}} {{Hider hiding|title=Конвертация времени|content= <source lang="c"> #include "xtime.h" #define _TBIAS_DAYS ((70 * (u32_t)365) + 17) #define _TBIAS_SECS (_TBIAS_DAYS * (xtime_t)86400) #define _TBIAS_YEAR 1900 #define MONTAB(year) ((((year) & 03) || ((year) == 0)) ? mos : lmos) const s16_t lmos[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}; const s16_t mos[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; #define Daysto32(year, mon) (((year - 1) / 4) + MONTAB(year)[mon]) ///////////////////////////////////////////////////////////////////// xtime_t xtmtot(struct tm *t) { /* convert time structure to scalar time */ s32_t days; xtime_t secs; s32_t mon, year; /* Calculate number of days. */ mon = t->tm_mon - 1; year = t->tm_year - _TBIAS_YEAR; days = Daysto32(year, mon) - 1; days += 365 * year; days += t->tm_mday; days -= _TBIAS_DAYS; /* Calculate number of seconds. */ secs = 3600 * t->tm_hour; secs += 60 * t->tm_min; secs += t->tm_sec; secs += (days * (xtime_t)86400); return (secs); } ///////////////////////////////////////////////////////////////////// void xttotm(struct tm *t, xtime_t secsarg) { u32_t secs; s32_t days; s32_t mon; s32_t year; s32_t i; const s16_t* pm; #ifdef _XT_SIGNED if (secsarg >= 0) { secs = (u32_t)secsarg; days = _TBIAS_DAYS; } else { secs = (u32_t)secsarg + _TBIAS_SECS; days = 0; } #else secs = secsarg; days = _TBIAS_DAYS; #endif /* days, hour, min, sec */ days += secs / 86400; secs = secs % 86400; t->tm_hour = secs / 3600; secs %= 3600; t->tm_min = secs / 60; t->tm_sec = secs % 60; /* determine year */ for (year = days / 365; days < (i = Daysto32(year, 0) + 365*year); ) { --year; } days -= i; t->tm_year = year + _TBIAS_YEAR; /* determine month */ pm = MONTAB(year); for (mon = 12; days < pm[--mon]; ); t->tm_mon = mon + 1; t->tm_mday = days - pm[mon] + 1; } </source>}} {{Hider hiding|title=Конвертация времени из формата Excel в Unix|content= <source lang="c"> double et; // дата и время в формате Excel (также используется в OpenOffice, Sierra Chart) time_t ut = round( ( et * 86400 ) - 2209161600 ); // дата и время в формате Unix </source>}} == См. также == * [[Timestamp]] {{нет источников|дата=2012-01-19}} {{Внешние ссылки нежелательны}} == Ссылки == * [http://unixtime.info Конвертер UNIX-времени] [[Категория:Календарь]] [[Категория:UNIX]]'
Вики-текст новой страницы после правки (new_wikitext)
'{{эта статья|о формате кодирования времени|time (Unix)|об утилите}} '''UNIX-время''' ({{lang-en|Unix time}}) или '''POSIX-время''' — система описания моментов во времени, принятая в [[UNIX]] и других [[POSIX]]-совместимых [[операционная система|операционных системах]]. Определяется как количество секунд, прошедших с [[полночь|полуночи]] (00:00:00 [[Всемирное координированное время|UTC]]) [[1 января]] [[1970 год]]а (четверг); время с этого момента называют «эрой UNIX» ({{lang-en|Unix Epoch}}). Время UNIX согласуется с UTC — в частности, при объявлении [[секунда координации|високосных секунд]] UTC соответствующие номера секунд повторяются, то есть високосные секунды не учитываются. Представление времени в виде количества секунд удобно использовать для сравнения и хранения дат (дата и время в этом формате занимают всего 4 или 8 [[октет (информатика)|байтов]]). При необходимости обращения к элементам дат (день, месяц, год) секунды можно преобразовать в любой подходящий формат (и наоборот), но если такие преобразования выполняются часто, они снижают производительность. В программах для хранения UNIX-времени используется [[Целое (тип данных)#Целые со знаком|целочисленный знаковый тип]]. Знаковость упрощает вычисление разницы в секундах между двумя моментами времени, которая может быть отрицательной. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно. Чтобы узнать текущее UNIX-время в большинстве UNIX-подобных систем, можно использовать команду <code>[[date]] +%s</code>. == «Юбилейные» значения == <!-- Проверено User:ASDFS 22.06.2014 --> {| class="wikitable" ! Время || Количество секунд |- |align="right"| [[13 декабря]] [[1901 год]]а, 20:45:52 [[UTC]] || Минимальная дата в знаковом 32-бит представлении (0x80000000) |- |align="right"| [[19 января]] [[2038 год]]а, 03:14:07 [[UTC]] || Максимальная дата в знаковом 32-бит представлении (0x7FFFFFFF) |- |align="right"| [[9 сентября]] [[2001 год]]а, 01:46:40 [[UTC]] || [[Миллиард|1&nbsp;000&nbsp;000&nbsp;000]] (1 [[гига]]секунда) |- |align="right"| [[10 января]] [[2004 год]]а, 13:37:04 [[UTC]] || [[1 073 741 824 (число)|1&nbsp;073&nbsp;741&nbsp;824]]=2<sup>30</sup> (1 [[гиби]]секунда) |- |align="right"| [[18 марта]] [[2005 год]]а, 01:58:31 [[UTC]] || [[1 111 111 111 (число)|1&nbsp;111&nbsp;111&nbsp;111]] |- |align="right" | [[6 сентября]] [[2008 год]]а 12:12:05 [[UTС]] || [[1 220 703 125 (число)|1 220 703 125]] = 5<sup>13</sup> |- |align="right"| [[13 февраля]] [[2009 год]]а, 23:31:30 [[UTC]] || [[1 234 567 890 (число)|1&nbsp;234&nbsp;567&nbsp;890]] |- |align="right"| [[24 октября]] [[2014 год]]а, 09:03:34 [[UTC]] || [[1 414 141 414 (число)|14 14 14 14 14]] |} == Проблема 2038 == {{main|Проблема 2038 года}} [[19 января]] [[2038 год]]а в 03:14:08 по всемирному времени значение [[переменная (программирование)|переменной]] типа <code>time_t</code>, отсчитывающей число [[секунда|секунд]], прошедших с [[1 января]] [[1970 год]]а, достигнет 2<sup>31</sup>, что может привести к ошибочной интерпретации этого числа как [[Дополнительный код (представление числа)|отрицательного]]. Возможное решение данной проблемы состоит в использовании для хранения времени не 32-[[бит]]ной, а 64-битной переменной (что и делается во всех современных 64-битных операционных системах), этого хватит на 292 млрд лет. == Программная конвертация == Приводится пример реализации на языке [[Си (язык программирования)|Си]] функций конвертации между UNIX-временем и обычным представлением в виде даты и времени суток. Пример приведен в стандартном знаковом 32-бит формате. Однако, закомментировав определение _XT_SIGNED, пример соберется в беззнаковом варианте. <!-- Проверено User:ASDFS 22.06.2014 --> {{Hider hiding|title=Конвертация времени, заголовочный файл|content= <source lang="c"> typedef unsigned short u16_t; typedef unsigned long u32_t; typedef signed short s16_t; typedef signed long s32_t; // DEF: standard signed format // UNDEF: non-standard unsigned format #define _XT_SIGNED #ifdef _XT_SIGNED typedef s32_t xtime_t; #else typedef u32_t xtime_t; #endif struct tm { /* date and time components */ BYTE tm_sec; BYTE tm_min; BYTE tm_hour; BYTE tm_mday; BYTE tm_mon; u16_t tm_year; }; void xttotm(struct tm *t, xtime_t secs); xtime_t xtmtot(struct tm *t); </source>}} {{Hider hiding|title=Конвертация времени|content= <source lang="c"> #include "xtime.h" #define _TBIAS_DAYS ((70 * (u32_t)365) + 17) #define _TBIAS_SECS (_TBIAS_DAYS * (xtime_t)86400) #define _TBIAS_YEAR 1900 #define MONTAB(year) ((((year) & 03) || ((year) == 0)) ? mos : lmos) const s16_t lmos[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}; const s16_t mos[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; #define Daysto32(year, mon) (((year - 1) / 4) + MONTAB(year)[mon]) ///////////////////////////////////////////////////////////////////// xtime_t xtmtot(struct tm *t) { /* convert time structure to scalar time */ s32_t days; xtime_t secs; s32_t mon, year; /* Calculate number of days. */ mon = t->tm_mon - 1; year = t->tm_year - _TBIAS_YEAR; days = Daysto32(year, mon) - 1; days += 365 * year; days += t->tm_mday; days -= _TBIAS_DAYS; /* Calculate number of seconds. */ secs = 3600 * t->tm_hour; secs += 60 * t->tm_min; secs += t->tm_sec; secs += (days * (xtime_t)86400); return (secs); } ///////////////////////////////////////////////////////////////////// void xttotm(struct tm *t, xtime_t secsarg) { u32_t secs; s32_t days; s32_t mon; s32_t year; s32_t i; const s16_t* pm; #ifdef _XT_SIGNED if (secsarg >= 0) { secs = (u32_t)secsarg; days = _TBIAS_DAYS; } else { secs = (u32_t)secsarg + _TBIAS_SECS; days = 0; } #else secs = secsarg; days = _TBIAS_DAYS; #endif /* days, hour, min, sec */ days += secs / 86400; secs = secs % 86400; t->tm_hour = secs / 3600; secs %= 3600; t->tm_min = secs / 60; t->tm_sec = secs % 60; /* determine year */ for (year = days / 365; days < (i = Daysto32(year, 0) + 365*year); ) { --year; } days -= i; t->tm_year = year + _TBIAS_YEAR; /* determine month */ pm = MONTAB(year); for (mon = 12; days < pm[--mon]; ); t->tm_mon = mon + 1; t->tm_mday = days - pm[mon] + 1; } </source>}} {{Hider hiding|title=Конвертация времени из формата Excel в Unix|content= <source lang="c"> double et; // дата и время в формате Excel (также используется в OpenOffice, Sierra Chart) time_t ut = round( ( et * 86400 ) - 2209161600 ); // дата и время в формате Unix </source>}} == См. также == * [[Timestamp]] {{нет источников|дата=2012-01-19}} {{Внешние ссылки нежелательны}} == Ссылки == * [http://unixtime.info Конвертер UNIX-времени] * [http://www.unixtime.it/ru/ Конвертер Unix time многоязычный] [[Категория:Календарь]] [[Категория:UNIX]]'
Унифицированная разница изменений правки (edit_diff)
'@@ -168,5 +168,6 @@ == Ссылки == * [http://unixtime.info Конвертер UNIX-времени] +* [http://www.unixtime.it/ru/ Конвертер Unix time многоязычный] [[Категория:Календарь]] [[Категория:UNIX]] '
Новый размер страницы (new_size)
9269
Старый размер страницы (old_size)
9183
Изменение размера в правке (edit_delta)
86
Добавленные в правке строки (added_lines)
[ 0 => '* [http://www.unixtime.it/ru/ Конвертер Unix time многоязычный]' ]
Удалённые в правке строки (removed_lines)
[]
Была ли правка сделана через выходной узел сети Tor (tor_exit_node)
0
Unix-время изменения (timestamp)
1417043032