Найти Ρ‚Π΅ΠΌΡƒ
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸƒ Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Go для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 13. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ΠŸΠ°ΠΊΠ΅Ρ‚ time

ОглавлСниС

Π’ этой части самоучитСля ΠΈΠ·ΡƒΡ‡ΠΈΠΌ способы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² языкС Go, Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° time ΠΈ Π² Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠΈΠΌ ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΡƒ интСрСсных Π·Π°Π΄Π°Ρ‡.

← Π§Π°ΡΡ‚ΡŒ 12

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ

Как Π² Go хранится врСмя

Π―Π·Ρ‹ΠΊ программирования Go Ρ…Ρ€Π°Π½ΠΈΡ‚ врСмя Π² соотвСтствии с эпохой UNIX, которая Π±Π΅Ρ€Π΅Ρ‚ своС Π½Π°Ρ‡Π°Π»ΠΎ 1 января 1970 Π³ΠΎΠ΄Π° Π² 00:00:00 UTC. БистСмы Π½Π° Π±Π°Π·Π΅ UNIX ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ врСмя ΠΏΡƒΡ‚Π΅ΠΌ подсчСта сСкунд, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с этого особСнного дня. Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… сСкунд хранится Π² Π²ΠΈΠ΄Π΅ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ измСняСтся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -2^32 Π΄ΠΎ 2^31 – 1. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ вопрос: Π·Π°Ρ‡Π΅ΠΌ для подсчСта Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int32, Ссли ΠΎΠ½ содСрТит ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами прСдставляСтся врСмя Π΄ΠΎ эпохи UNIX, Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ – послС Π½Π΅Ρ‘. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика -100 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π° 100 сСкунд Π΄ΠΎ 1 января 1970 Π³ΠΎΠ΄Π°, Π° +100 сСкунд ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 100 сСкунд послС этой Π΄Π°Ρ‚Ρ‹.

ΠŸΠ°ΠΊΠ΅Ρ‚ time

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² Go ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ time стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, содСрТащий ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… рассмотрим основныС ΠΈΠ· Π½ΠΈΡ….

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ локальноС врСмя ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Now. Однако стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запуска Π²Ρ‹Π²ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ значСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Ρ‘ написания:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

  1. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ (2024-04-11 17:39:17.756388243) прСдставляСт собой Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π³ΠΎΠ΄-мСсяц-дСнь час:ΠΌΠΈΠ½ΡƒΡ‚Π°:сСкунда.миллисСкунда
  2. Вторая Ρ‡Π°ΡΡ‚ΡŒ (+0300) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ смСщСниС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ UTC (ВсСмирного ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) – это основной стандарт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Π°Π²ΠΈΠ°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ€Ρ‚Π°Ρ…, ΠΏΠ»Π°Π½Π°Ρ… ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π°Ρ… ΠΏΠΎΠ³ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… областях.
  3. Π’Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ (MSK) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° часовой пояс. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это московскоС врСмя.
  4. ЧСтвСртая Ρ‡Π°ΡΡ‚ΡŒ (m=+0.000053694) содСрТит Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ самим языком. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС m ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° +0.000053694 прСдставляСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ количСство сСкунд с Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

Для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ UTC(), Unix() ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ встроСнной структуры time.Time связан с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ мСстополоТСниСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ своСй сути являСтся часовым поясом. ВсС Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ структурой time.Location с нСэкспортируСмыми полями. Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ часовом поясС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Location структуры Time, Π° Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.LoadLocation ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° In:

Π’Ρ‹Π²ΠΎΠ΄ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ содСрТит ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈΠ»ΠΈ "UTC", Ρ‚ΠΎ функция LoadLocation Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ врСмя Π² соотвСтствии с UTC. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ "Local" вСрнСтся локальноС врСмя. Π’ΠΎ всСх ΠΈΠ½Ρ‹Ρ… случаях Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ названиям ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… часовых поясов IANA. НапримСр, "Europe/Moscow", "Asia/Tomsk" ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

πŸ‘¨β€πŸ’» Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Β»

πŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Go Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса»

🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Go

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Go для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ GoΒ»

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Π·ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³ΠΎΠ΄, мСсяц ΠΈΠ»ΠΈ дСнь. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹, Ρ‚ΠΎ слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ time.Date со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сигнатурой:

func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time

Ѐункция time.Date ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π³ΠΎΠ΄, мСсяц, дСнь, час, ΠΌΠΈΠ½ΡƒΡ‚Π°, сСкунда, наносСкунда, мСстополоТСниС. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ сконвСртированы. НапримСр, 34 апрСля Π±ΡƒΠ΄Π΅Ρ‚ воспринято ΠΊΠ°ΠΊ 4 мая:

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Go производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° time.Format(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ структуры Time Π² строку, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ layout:

func (t Time) Format(layout string) string

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для time.Parse ΠΈ time.Format ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ time. Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ врСмя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² Π½ΠΈΡ…, прСдставляСт собой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ: 01/02 03:04:05PM '06 -0700, Ρ‡Ρ‚ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Unix выглядит ΠΊΠ°ΠΊ Mon Jan 2 15:04:05 MST 2006.

ДокумСнтация ΠΏΠ°ΠΊΠ΅Ρ‚Π° time допускаСт использованиС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

Для форматирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ константы ΠΈΠ· эталонного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, пСрСупорядочив ΠΈΡ… Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΌ порядкС. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, написанный Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран врСмя Ρƒ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ "15:04:05":

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ шаблонам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ DateOnly ("2006-01-02"), DateTime ("2006-01-02 15:04:05"), TimeOnly ("15:04:05") ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ:

На экран Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Ѐункция time.Parse парсит Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½Π° прСдставляСт. Π˜Π½Π°Ρ‡Π΅ говоря, ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ строку Π² структуру Time:

func Parse(layout, value string) (Time, error)

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Parse стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько нюансов. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн для парсинга с использованиСм шаблона, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с time.Parse допускаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π² языкС модСль для описания Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, time.Parse ΠΏΡ€ΠΈ отсутствии часового пояса Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ строкС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ врСмя Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ UTC:

Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² наносСкундах прСдставляСт Ρ‚ΠΈΠΏ Duration: type Duration int64, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 290 Π³ΠΎΠ΄Π°ΠΌΠΈ.

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Sub:

func (t Time) Sub(u Time) Duration

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Sub Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π³Π΄Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ Π² 2 часа 4 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ вычислим Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ:

На основС time.Sub Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄Π²Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  1. time.Since – вычисляСт ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сокращСниС для time.Now().Sub(t)
  2. time.Until – вычисляСт ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сокращСниС для t.Sub(time.Now())

Рассмотрим эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создадим Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅) с Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ Π² Ρ‚Ρ€ΠΈ часа ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈ вычислим Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ, ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΠ² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎ сСкунд с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Round:

АрифмСтика Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π Π°Π½Π΅Π΅ для добавлСния ΠΈΠ»ΠΈ вычитания Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΡ‹ использовали явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Date. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ довольно Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ ошибкам.

Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ time.Add ΠΈ time.AddDate:

func (t Time) Add(d Duration) Timefunc (t Time) AddDate(years int, months int, days int) Time

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ€ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… – Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΊΠΎΠ΄Π° ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° t1 ΠΈ t2 ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: time.Equal (t1 Ρ€Π°Π²Π΅Π½ t2), time.Before (t1 ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» Π΄ΠΎ t2) ΠΈ time.After (t1 ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» послС t2):

ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях трСбуСтся ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ этом ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ функция time.Sleep, которая останавливаСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… врСмя. ΠŸΡ€ΠΈ этом ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ time.Sleep ΠΈ, соотвСтствСнно, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку "start...", остановит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ main Π½Π° 3 сСкунды ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку "end after 3 seconds":

Π—Π°Π΄Π°Ρ‡ΠΈ

Π‘Π°ΠΌΠΎΠ΅ врСмя Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Ρ€Π΅ΡˆΠΈΠ² нСсколько нСслоТных Π·Π°Π΄Π°Ρ‡. ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки, Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ конструкций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, log.Fatal(err).

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для прСобразования строкового прСдставлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ 2000-05-14T07:30:00+07:00 Π² структуру Time Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Unix Date: Sun May 14 07:30:00 +0700 2000. Для нахоТдСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ шаблона ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ списку констант ΠΏΠ°ΠΊΠ΅Ρ‚Π° time.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

РСшСниС

Π—Π°ΠΏΠΈΡΡŒ ΠΊ Π²Ρ€Π°Ρ‡Ρƒ

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ систСмы записи Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ ΠΊ Π²Ρ€Π°Ρ‡Ρƒ. На Π²Ρ…ΠΎΠ΄ подаСтся строка с Π΄Π°Ρ‚ΠΎΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ β€œMon Jan _2 15:04:05 2006” (time.ANSIC). НСобходимо ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ соотвСтствиС Π΄Π°Ρ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ условиям:

  1. Π”Π°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ дСнь. Если это Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС с тСкстом: "НСльзя Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ дСнь!".
  2. Π”Π°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π΅ просрочСна. Если это Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС с тСкстом: "Π—Π°ΠΏΠΈΡΡŒ просрочСна!".
  3. ВрСмя записи Π»Π΅ΠΆΠΈΡ‚ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ ΠΎΡ‚ 8 Π΄ΠΎ 20 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Если это Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС с тСкстом: "Π’Ρ€Π°Ρ‡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с 8 Π΄ΠΎ 20 часов!".

Π’ случаС соотвСтствия Π΄Π°Ρ‚Ρ‹ всСм условиям Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС с тСкстом: "Π’Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ записались Π½Π° %s\n", Π³Π΄Π΅ вмСсто спСцификатора %s находится Π΄Π°Ρ‚Π° записи, отформатированная Π² соотвСтствии с шаблоном "Monday, January 2, 2006, at 15:04".

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

РСшСниС

Бколько Π»Π΅Ρ‚ Π“ΠΎΡˆΠ΅?

ΠŸΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊ Π“ΠΎΡˆΠ° ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько Π΅ΠΌΡƒ ΠΏΠΎΠ»Π½Ρ‹Ρ… Π»Π΅Ρ‚ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с большой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊΡƒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ свой возраст, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: количСство Π»Π΅Ρ‚, мСсяцСв, нСдСль, Π΄Π½Π΅ΠΉ, часов ΠΈ ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π΄Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ "2006-01-02 15:04:05" (time.DateTime).

⚠️ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Ρ‹ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NewReader ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° bufio.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

РСшСниС

Бколько Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ?

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для подсчСта количСства Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π°Ρ‚Π°ΠΌΠΈ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ). Π”Π°Π½Π½Ρ‹Π΅ вводятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ "2006-01-02" (time.DateOnly). Π’Π°ΠΊΠΆΠ΅ трСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π΄Π°Ρ‚Π° Π±Ρ‹Π»Π° Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ. Если это условиС Π½Π΅ выполняСтся, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с тСкстом: "ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π΄Π°Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ".

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

РСшСниС

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ способ хранСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° time: Now, Date, Format, Parse, Sub, Since, Until ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π˜Ρ… использованиС ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ Π½ΠΎΠ²Ρ‹Π΅ возмоТности для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ time Π½Π΅ ограничиваСтся рассмотрСнными Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ функциями ΠΈ прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… инструмСнтов.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части самоучитСля научимся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой для выполнСния часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π·Π°Π΄Π°Ρ‡.

***

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ самоучитСля

  1. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ΠŸΠ°ΠΊΠ΅Ρ‚ time.