Difference between revisions of "ISO 8601/ru"
(Created page with "{{ISO 8601}} ---- <span style="color:#FF0000">ENG: '''AT THE MOMENT THIS PAGE IS UNDER TRANSLATION.''' <br /> RUS: '''В НАСТОЯЩИЙ МОМЕНТ СТРАНИЦА Н...") |
|||
(6 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{ISO 8601}} | {{ISO 8601}} | ||
+ | __TOC__ | ||
− | + | ISO 8601 - это стандарт, выпущенный Международной Организацией по Стандартизации (ISO) для даты и времени. | |
− | + | Согласно ISO 8601, дата выглядит следующим образом: | |
− | |||
− | |||
− | ISO 8601 | ||
− | |||
YYYY-MM-DD | YYYY-MM-DD | ||
− | + | , где YYYY - год по Григорианскому календарю, MM - месяц между 01 (январь) и 12 (декабрь), а DD - день месяца между 01 и 31. | |
− | + | Время записывается [как]: | |
HH:MM:SS | HH:MM:SS | ||
− | + | , где HH являются часами после полуночи между 00 и 23. MM - минуты с начала предыдущего часа между 00 и 59. SS - секунды с начала предыдущей минуты между 00 и 59. | |
− | |||
− | |||
− | + | Объединенные дата и время должны быть помечены буквой "Т": | |
− | + | YYYY-MM-DD<b>T</b>HH:MM:SS | |
+ | Но часто промежуточную букву "T" можно заменить пробелом. | ||
− | + | Часовой пояс можно указать, отметив разницу во времени между всемирным координированным временем (UTC) следующим образом: | |
YYYY-MM-DDTHH:MM:SS±HH:MM | YYYY-MM-DDTHH:MM:SS±HH:MM | ||
− | == | + | == Полезные функции == |
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 37: | Line 33: | ||
! Function !! Description !! Unit | ! Function !! Description !! Unit | ||
|- | |- | ||
− | | DayOfTheMonth || | + | | DayOfTheMonth || Возвращает индекс дня месяца для значения [[TDateTime]]|| DateUtils |
|- | |- | ||
− | | DayOfTheWeek || | + | | DayOfTheWeek || Возвращает индекс дня недели для значения TDateTime || DateUtils |
|- | |- | ||
− | | DayOfTheYear || | + | | DayOfTheYear ||Возвращает день года для значения TDateTime || DateUtils |
|- | |- | ||
− | | FormatDateTime || | + | | FormatDateTime || Возвращает строковое представление значения TDateTime с заданным форматом || SysUtils |
|- | |- | ||
− | | WeekOf || | + | | WeekOf ||Возвращает неделю года для значения TDateTime || DateUtils |
|} | |} | ||
− | == | + | == Примеры == |
− | < | + | <syntaxhighlight lang="pascal"> |
program iso_8601_project; | program iso_8601_project; | ||
Line 56: | Line 52: | ||
− | // | + | // Объединение даты и времени в формате UTC, напр. // 2018-09-26T12:18:47Z |
function ISO8601_Combined_date_and_time_in_UTC(a_DateTime: TDateTime; a_Time_zone:string):string; | function ISO8601_Combined_date_and_time_in_UTC(a_DateTime: TDateTime; a_Time_zone:string):string; | ||
begin | begin | ||
Line 62: | Line 58: | ||
end; | end; | ||
− | // | + | // Неделя: напр. 2018-W39 |
function ISO8601_week(a_DateTime: TDateTime):string; | function ISO8601_week(a_DateTime: TDateTime):string; | ||
begin | begin | ||
Line 69: | Line 65: | ||
end; | end; | ||
− | // | + | // Дата с номером недели: напр.2018-W39-3 |
function ISO8601_Date_with_week_number(a_DateTime: TDateTime):string; | function ISO8601_Date_with_week_number(a_DateTime: TDateTime):string; | ||
begin | begin | ||
Line 76: | Line 72: | ||
end; | end; | ||
− | // | + | // Порядковый номер дня в году: напр. 2018-269 |
function ISO8601_Ordinal_date(a_DateTime: TDateTime):string; | function ISO8601_Ordinal_date(a_DateTime: TDateTime):string; | ||
begin | begin | ||
Line 98: | Line 94: | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
Latest revision as of 17:29, 8 July 2019
│
English (en) │
suomi (fi) │
русский (ru) │
ISO 8601 - это стандарт, выпущенный Международной Организацией по Стандартизации (ISO) для даты и времени. Согласно ISO 8601, дата выглядит следующим образом:
YYYY-MM-DD
, где YYYY - год по Григорианскому календарю, MM - месяц между 01 (январь) и 12 (декабрь), а DD - день месяца между 01 и 31.
Время записывается [как]:
HH:MM:SS
, где HH являются часами после полуночи между 00 и 23. MM - минуты с начала предыдущего часа между 00 и 59. SS - секунды с начала предыдущей минуты между 00 и 59.
Объединенные дата и время должны быть помечены буквой "Т":
YYYY-MM-DDTHH:MM:SS
Но часто промежуточную букву "T" можно заменить пробелом.
Часовой пояс можно указать, отметив разницу во времени между всемирным координированным временем (UTC) следующим образом:
YYYY-MM-DDTHH:MM:SS±HH:MM
Полезные функции
Function | Description | Unit |
---|---|---|
DayOfTheMonth | Возвращает индекс дня месяца для значения TDateTime | DateUtils |
DayOfTheWeek | Возвращает индекс дня недели для значения TDateTime | DateUtils |
DayOfTheYear | Возвращает день года для значения TDateTime | DateUtils |
FormatDateTime | Возвращает строковое представление значения TDateTime с заданным форматом | SysUtils |
WeekOf | Возвращает неделю года для значения TDateTime | DateUtils |
Примеры
program iso_8601_project;
Uses SysUtils,DateUtils;
// Объединение даты и времени в формате UTC, напр. // 2018-09-26T12:18:47Z
function ISO8601_Combined_date_and_time_in_UTC(a_DateTime: TDateTime; a_Time_zone:string):string;
begin
result := FormatDateTime( 'yyyy-mm-dd"T"hh:mm:ss', a_DateTime )+a_Time_zone;
end;
// Неделя: напр. 2018-W39
function ISO8601_week(a_DateTime: TDateTime):string;
begin
result := FormatDateTime('yyyy', a_DateTime)+'-W' +
(WeekOf( a_DateTime )).ToString ;
end;
// Дата с номером недели: напр.2018-W39-3
function ISO8601_Date_with_week_number(a_DateTime: TDateTime):string;
begin
result := FormatDateTime('yyyy', a_DateTime)+'-W' +
(WeekOf(a_DateTime)).ToString + '-' + (DayOfTheWeek(a_DateTime)).ToString ;
end;
// Порядковый номер дня в году: напр. 2018-269
function ISO8601_Ordinal_date(a_DateTime: TDateTime):string;
begin
result := FormatDateTime('yyyy', a_DateTime)+ '-'
+ (DayOfTheYear( a_DateTime )).ToString ;
end;
var
aDateTime: TDateTime;
begin
aDateTime := now;
WriteLn('Date: '+ FormatDateTime( 'yyyy-mm-dd', aDateTime )); // 2018-09-26
WriteLn('Combined date and time in UTC: ');
WriteLn(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'+00:00')); // 2018-09-26T12:18:47+00:00
WriteLn(' ' + FormatDateTime( 'yyyymmdd"T"hhmmss', aDateTime )+'Z'); // 20180926T121847Z
Writeln(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'Z')); //2018-09-26T12:18:47Z
WriteLn('Week: '+ ISO8601_week(aDateTime) ); // 2018-W39
WriteLn('Date with week number: '+ ISO8601_Date_with_week_number(aDateTime)); // 2018-W39-3
WriteLn('Ordinal date: '+ ISO8601_Ordinal_date(aDateTime)); // 2018-269
ReadLn;
end.