time.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. timeMethod()
  8. /*
  9. // Получаем текущее время
  10. now := time.Now()
  11. // Создаем времч с помощью конкретных значений
  12. currentTime := time.Date(
  13. 2020,
  14. time.May,
  15. 15, // день
  16. 10, // часы
  17. 13, // минуты
  18. 12, // секунды
  19. 45, // наносекунды
  20. time.UTC,
  21. )
  22. // Создаем время, используя секунды и наносекунды, прошедшие с начала эпохи Unix
  23. unixTime := time.Unix(
  24. 150000, // секунды
  25. 1, // наносекунды
  26. )
  27. // 01-02 03:04.05 0006 15
  28. // день месяц час(12) минуты секунды год час(24)
  29. // Форматируем и выводим время в строковом виде
  30. // fmt.Println(now.Format("02-01-2006 15:04:05"))
  31. fmt.Println(now.Format("02-01-2006 15:04:05"))
  32. fmt.Println(currentTime.Format("02-01-2006 15:04:05"))
  33. fmt.Println(unixTime.Format("02-01-2006 15:04:05"))
  34. // Функция Parse парсит строку в соответствии с заданным шаблоном
  35. firstTime, err := time.Parse("2006/01/02 15-04", "2020/05/15 17-45")
  36. if err != nil {
  37. panic(err)
  38. }
  39. fmt.Println(firstTime.Format("02-01-2006 15:04:05"))
  40. // LoadLocation находит временную зону в справочнике IANA
  41. // https://www.iana.org/time-zones
  42. loc, err := time.LoadLocation("Asia/Yekaterinburg")
  43. if err != nil {
  44. panic(err)
  45. }
  46. // Функция ParseInLocation парсит строку в указанной временной зоне
  47. secondTime, err := time.ParseInLocation("Jan 2 06 03:04:05pm", "May 15 20 05:45:10pm", loc)
  48. if err != nil {
  49. panic(err)
  50. }
  51. fmt.Println(firstTime.Format("02-01-2006 15:04:05")) // 15-05-2020 17:45:00
  52. fmt.Println(secondTime.Format("02-01-2006 15:04:05")) // 15-05-2020 17:45:10
  53. */
  54. }
  55. func timeMethod() {
  56. current := time.Date(2020, time.May, 15, 17, 45, 12, 0, time.Local)
  57. fmt.Println(current.Date())
  58. fmt.Println(current.Year())
  59. fmt.Println(current.Month())
  60. fmt.Println(current.Day())
  61. fmt.Println(current.Clock())
  62. fmt.Println(current.Hour())
  63. fmt.Println(current.Minute())
  64. fmt.Println(current.Second())
  65. fmt.Println(current.Unix())
  66. fmt.Println(current.Weekday())
  67. fmt.Println(current.YearDay())
  68. current = time.Date(2020, time.May, 15, 17, 45, 12, 0, time.Local)
  69. fmt.Println(current.Format("02-01-2006 15:04:05"))
  70. // Сравнение структур Time
  71. firstTime := time.Date(2020, time.May, 15, 17, 45, 12, 0, time.Local)
  72. secondTime := time.Date(2020, time.May, 15, 16, 45, 12, 0, time.Local)
  73. // func (t Time) After(u Time) bool
  74. // true если позже
  75. fmt.Println(firstTime.After(secondTime)) // true
  76. // func (t Time) Before(u Time) bool
  77. // true если раньше
  78. fmt.Println(firstTime.Before(secondTime)) // false
  79. // func (t Time) Equal(u Time) bool
  80. // true если равны
  81. fmt.Println(firstTime.Equal(secondTime)) // false
  82. // Методы, изменяющие структуру Time
  83. now := time.Date(2020, time.May, 15, 17, 45, 12, 0, time.Local)
  84. // func (t Time) Add(d Duration) Time
  85. // изменяет дату в соответствии с параметром - "продолжительностью"
  86. future := now.Add(time.Hour * 12) // перемещаемся на 12 часов вперед
  87. // func (t Time) AddDate(years int, months int, days int) Time
  88. // изменяет дату в соответствии с параметрами - количеством лет, месяцев и дней
  89. past := now.AddDate(-1, -2, -3) // перемещаемся на 1 год, два месяца и 3 дня назад
  90. // func (t Time) Sub(u Time) Duration
  91. // вычисляет время, прошедшее между двумя датами
  92. fmt.Println(future.Sub(past)) // 10332h0m0s
  93. }