Sign in Join
Wiki copytemporary

ISO 8601/ru: what changed

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

OldNewLine
11ISO 8601 - это стандарт, выпущенный Международной Организацией по Стандартизации (ISO) для даты и времени. Согласно ISO 8601, дата выглядит следующим образом:
22
33` YYYY-MM-DD`
44
55, где YYYY - год по Григорианскому календарю, MM - месяц между 01 (январь) и 12 (декабрь), а DD - день месяца между 01 и 31.
66
77Время записывается \[как\]:
88
99` HH:MM:SS`
1010
1111, где HH являются часами после полуночи между 00 и 23. MM - минуты с начала предыдущего часа между 00 и 59. SS - секунды с начала предыдущей минуты между 00 и 59.
1212
1313Объединенные дата и время должны быть помечены буквой "Т":
1414
15-` YYYY-MM-DD`<b>`T`</b>`HH:MM:SS`
15+` YYYY-MM-DD``T``HH:MM:SS`
1616
1717Но часто промежуточную букву "T" можно заменить пробелом.
1818
1919Часовой пояс можно указать, отметив разницу во времени между всемирным координированным временем (UTC) следующим образом:
2020
2121` YYYY-MM-DDTHH:MM:SS±HH:MM`
2222
2323## Полезные функции
2424
2525| Function | Description | Unit |
2626|----|----|----|
2727| DayOfTheMonth | Возвращает индекс дня месяца для значения [[TDateTime]] | DateUtils |
2828| DayOfTheWeek | Возвращает индекс дня недели для значения TDateTime | DateUtils |
2929| DayOfTheYear | Возвращает день года для значения TDateTime | DateUtils |
3030| FormatDateTime | Возвращает строковое представление значения TDateTime с заданным форматом | SysUtils |
3131| WeekOf | Возвращает неделю года для значения TDateTime | DateUtils |
3232
3333## Примеры
3434
3535``` pascal
3636program iso_8601_project;
3737
3838Uses SysUtils,DateUtils;
3939
4040// Объединение даты и времени в формате UTC, напр. // 2018-09-26T12:18:47Z
4141function ISO8601_Combined_date_and_time_in_UTC(a_DateTime: TDateTime; a_Time_zone:string):string;
4242begin
4343 result := FormatDateTime( 'yyyy-mm-dd"T"hh:mm:ss', a_DateTime )+a_Time_zone;
4444end;
4545
4646// Неделя: напр. 2018-W39
4747function ISO8601_week(a_DateTime: TDateTime):string;
4848begin
4949 result := FormatDateTime('yyyy', a_DateTime)+'-W' +
5050 (WeekOf( a_DateTime )).ToString ;
5151end;
5252
5353// Дата с номером недели: напр.2018-W39-3
5454function ISO8601_Date_with_week_number(a_DateTime: TDateTime):string;
5555begin
5656 result := FormatDateTime('yyyy', a_DateTime)+'-W' +
5757 (WeekOf(a_DateTime)).ToString + '-' + (DayOfTheWeek(a_DateTime)).ToString ;
5858end;
5959
6060// Порядковый номер дня в году: напр. 2018-269
6161function ISO8601_Ordinal_date(a_DateTime: TDateTime):string;
6262begin
6363 result := FormatDateTime('yyyy', a_DateTime)+ '-'
6464 + (DayOfTheYear( a_DateTime )).ToString ;
6565end;
6666
6767var
6868 aDateTime: TDateTime;
6969begin
7070 aDateTime := now;
7171 WriteLn('Date: '+ FormatDateTime( 'yyyy-mm-dd', aDateTime )); // 2018-09-26
7272 WriteLn('Combined date and time in UTC: ');
7373 WriteLn(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'+00:00')); // 2018-09-26T12:18:47+00:00
7474 WriteLn(' ' + FormatDateTime( 'yyyymmdd"T"hhmmss', aDateTime )+'Z'); // 20180926T121847Z
7575 Writeln(' ' + ISO8601_Combined_date_and_time_in_UTC(aDateTime,'Z')); //2018-09-26T12:18:47Z
7676 WriteLn('Week: '+ ISO8601_week(aDateTime) ); // 2018-W39
7777 WriteLn('Date with week number: '+ ISO8601_Date_with_week_number(aDateTime)); // 2018-W39-3
7878 WriteLn('Ordinal date: '+ ISO8601_Ordinal_date(aDateTime)); // 2018-269
7979 ReadLn;
8080end.
8181```
8282
8383---
8484*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