Sign in Join
Wiki copytemporary

ISO 8601/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: ISO 8601/ru

OldNewLine
1+ISO 8601 - это стандарт, выпущенный Международной Организацией по Стандартизации (ISO) для даты и времени. Согласно ISO 8601, дата выглядит следующим образом:
2+
3+` YYYY-MM-DD`
4+
5+, где YYYY - год по Григорианскому календарю, MM - месяц между 01 (январь) и 12 (декабрь), а DD - день месяца между 01 и 31.
6+
7+Время записывается \[как\]:
8+
9+` HH:MM:SS`
10+
11+, где HH являются часами после полуночи между 00 и 23. MM - минуты с начала предыдущего часа между 00 и 59. SS - секунды с начала предыдущей минуты между 00 и 59.
12+
13+Объединенные дата и время должны быть помечены буквой "Т":
14+
15+` YYYY-MM-DD`<b>`T`</b>`HH:MM:SS`
16+
17+Но часто промежуточную букву "T" можно заменить пробелом.
18+
19+Часовой пояс можно указать, отметив разницу во времени между всемирным координированным временем (UTC) следующим образом:
20+
21+` YYYY-MM-DDTHH:MM:SS±HH:MM`
22+
23+## Полезные функции
24+
25+| Function | Description | Unit |
26+|----|----|----|
27+| DayOfTheMonth | Возвращает индекс дня месяца для значения [[TDateTime]] | DateUtils |
28+| DayOfTheWeek | Возвращает индекс дня недели для значения TDateTime | DateUtils |
29+| DayOfTheYear | Возвращает день года для значения TDateTime | DateUtils |
30+| FormatDateTime | Возвращает строковое представление значения TDateTime с заданным форматом | SysUtils |
31+| WeekOf | Возвращает неделю года для значения TDateTime | DateUtils |
32+
33+## Примеры
34+
35+``` pascal
36+program iso_8601_project;
37+
38+Uses SysUtils,DateUtils;
39+
40+// Объединение даты и времени в формате UTC, напр. // 2018-09-26T12:18:47Z
41+function ISO8601_Combined_date_and_time_in_UTC(a_DateTime: TDateTime; a_Time_zone:string):string;
42+begin
43+ result := FormatDateTime( 'yyyy-mm-dd"T"hh:mm:ss', a_DateTime )+a_Time_zone;
44+end;
45+
46+// Неделя: напр. 2018-W39
47+function ISO8601_week(a_DateTime: TDateTime):string;
48+begin
49+ result := FormatDateTime('yyyy', a_DateTime)+'-W' +
50+ (WeekOf( a_DateTime )).ToString ;
51+end;
52+
53+// Дата с номером недели: напр.2018-W39-3
54+function ISO8601_Date_with_week_number(a_DateTime: TDateTime):string;
55+begin
56+ result := FormatDateTime('yyyy', a_DateTime)+'-W' +
57+ (WeekOf(a_DateTime)).ToString + '-' + (DayOfTheWeek(a_DateTime)).ToString ;
58+end;
59+
60+// Порядковый номер дня в году: напр. 2018-269
61+function ISO8601_Ordinal_date(a_DateTime: TDateTime):string;
62+begin
63+ result := FormatDateTime('yyyy', a_DateTime)+ '-'
64+ + (DayOfTheYear( a_DateTime )).ToString ;
65+end;
66+
67+var
68+ aDateTime: TDateTime;
69+begin
70+ aDateTime := now;
71+ WriteLn('Date: '+ FormatDateTime( 'yyyy-mm-dd', aDateTime )); // 2018-09-26
72+ WriteLn('Combined date and time in UTC: ');
73+ WriteLn(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'+00:00')); // 2018-09-26T12:18:47+00:00
74+ WriteLn(' ' + FormatDateTime( 'yyyymmdd"T"hhmmss', aDateTime )+'Z'); // 20180926T121847Z
75+ Writeln(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'Z')); //2018-09-26T12:18:47Z
76+ WriteLn('Week: '+ ISO8601_week(aDateTime) ); // 2018-W39
77+ WriteLn('Date with week number: '+ ISO8601_Date_with_week_number(aDateTime)); // 2018-W39-3
78+ WriteLn('Ordinal date: '+ ISO8601_Ordinal_date(aDateTime)); // 2018-269
79+ ReadLn;
80+end.
81+```
82+
83+---
84+*From the Free Pascal wiki, page "ISO 8601/ru", as it stood on 2019-07-08 after a change by Djzepi, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history