ISO 8601/fi: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: ISO 8601/fi
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ISO 8601 on kansainvälisen standardisoimisjärjestön (ISO) antama päivämäärän ja kellonajan esitystapa. ISO 8601:n mukaan päivämäärä esitetään seuraavasti: | |
| 2 | + | ||
| 3 | + | ` YYYY-MM-DD` | |
| 4 | + | ||
| 5 | + | Missä YYYY on vuosi gregoriaanisen kalenterin aikana, MM on kuukausi 01 (tammikuu) ja 12 (joulukuu) väliltä ja DD on kuukauden päivä 01 ja 31 väliltä. | |
| 6 | + | ||
| 7 | + | Aika tallennetaan: | |
| 8 | + | ||
| 9 | + | ` HH:MM:SS` | |
| 10 | + | ||
| 11 | + | jossa HH:lla merkitään tunteja keskiyön jälkeen 00:n ja 23:n välillä. MM tarkoittaa minuutteja edellisen tunnin alusta välillä 00 ja 59. SS on sekuntteja edellisen minuutin alusta välillä 00 ja 59. | |
| 12 | + | ||
| 13 | + | Yhdistetty päivämäärä ja kellonaika erotetaan kirjaimella "T": | |
| 14 | + | ||
| 15 | + | ` YYYY-MM-DDTHH:MM:SS` | |
| 16 | + | ||
| 17 | + | Mutta usein välikirjain "T" voidaan korvata välilyönnillä. | |
| 18 | + | ||
| 19 | + | Aikavyöhyke voidaan ilmaista merkitsemällä koordinoidun yleisajan (UTC) välinen aikaero seuraavasti: | |
| 20 | + | ||
| 21 | + | ` YYYY-MM-DDTHH:MM:SS±HH:MM` | |
| 22 | + | ||
| 23 | + | ## Hyödyllisiä funktioita | |
| 24 | + | ||
| 25 | + | | Funktio | Kuvaus | Käännösyksikkö | | |
| 26 | + | |----|----|----| | |
| 27 | + | | DayOfTheMonth | Antaa TDateTime-arvon kuukauden | DateUtils | | |
| 28 | + | | DayOfTheWeek | Antaa TDateTime-arvon viikoittaisen päiväindeksin | DateUtils | | |
| 29 | + | | DayOfTheYear | Antaa TDateTime-arvon päivän vuoden alusta | DateUtils | | |
| 30 | + | | FormatDateTime | Antaa TDateTime-arvon merkkijonoesityksenä määritellyssä muodossa | SysUtils | | |
| 31 | + | | WeekOf | Antaa TDateTime-arvon viikon numeron | DateUtils | | |
| 32 | + | ||
| 33 | + | ## Esimerkki | |
| 34 | + | ||
| 35 | + | ``` pascal | |
| 36 | + | program iso_8601_project; | |
| 37 | + | ||
| 38 | + | Uses SysUtils,DateUtils; | |
| 39 | + | ||
| 40 | + | // Yhdistetty päivämäärä ja kellonaika UTC esim. 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 | + | // Viikko esim. 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 | + | // Päivämäärä viikkonumerolla: esim. 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 | + | // Päivä vuoden alusta: esim. 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/fi", 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).* |
