1: Rozpoczęcie pracy z Carbon
1.1 Wprowadzenie
Prosty, semantyczny i przyjazny dla programistów pakiet golang do obsługi daty i czasu
Korzyści z korzystania z Carbon do obsługi daty i czasu:
- Przyjazny dla programistów: Carbon oferuje płynne i ekspresywne interfejsy do operacji na dacie i czasie, które są intuicyjne dla programistów.
- Wsparcie dla internacjonalizacji: Obsługuje internacjonalizację, umożliwiając lokalizację reprezentacji daty.
- Niemożliwość zmiany: Instancje Carbona są niemożliwe do modyfikacji, co oznacza, że mogą być bezpiecznie przekazywane bez nieoczekiwanych modyfikacji.
- Obsługa strefy czasowej: Carbon upraszcza złożoność zarządzania datami i czasami w różnych strefach czasowych.
- Obszerna API: Zapewnia kompleksowy zestaw funkcji do tworzenia, parsowania i formatowania dat i czasów.
1.2 Przewodnik instalacji
Instalacja dla wersji Go >= 1.16
Aby zainstalować pakiet Carbon dla wersji Go 1.16 lub nowszej, użyj następującej komendy:
go get -u github.com/golang-module/carbon/v2
Następnie zaimportuj pakiet do swojego pliku Go:
import "github.com/golang-module/carbon/v2"
Instalacja dla wersji Go < 1.16
Dla starszych wersji Go, możesz wciąż zainstalować Carbon używając:
go get -u github.com/golang-module/carbon
I zaimportuj go tak samo:
import "github.com/golang-module/carbon"
Należy zauważyć, że wersja v1 nie jest już aktywnie aktualizowana, ale będzie utrzymywana w celu naprawiania błędów.
1.3 Konfigurowanie pierwszego projektu Carbon
Podstawowa konfiguracja Carbona: Po zainstalowaniu Carbona, możesz zacząć go używać, tworząc po prostu nową instancję Carbona. Możesz dostosować Carbon, ustawiając domyślny globalny układ, strefę czasową i lokalizację, aby dostosować je do potrzeb projektu.
Ustawianie domyślnego globalnego układu, strefy czasowej i lokalizacji:
carbon.SetDefault(carbon.Default{
Layout: carbon.RFC3339Layout,
Timezone: carbon.PRC,
Locale: "en",
})
Jeśli nie jest to ustawione explicite, Carbon ma domyślne ustawienia dla nich — Layout: "2006-01-02 15:04:05"
, Strefa czasowa: lokalna
, Lokalizacja: "en"
.
Tworzenie instancji z znaczników czasowych
W Go działanie z znacznikami czasu jest częste, a Carbon dostarcza intuicyjnych metod do ich obsługi. Znacznik czasu to sekwencja znaków lub zakodowana informacja identyfikująca moment wystąpienia określonego zdarzenia, zazwyczaj podając datę i godzinę, czasami dokładną do małej części sekundy.
Aby utworzyć instancję Carbona z znacznika czasu Unix, który reprezentuje liczbę sekund, które upłynęły od epoki Unix (północ 1 stycznia 1970 r. UTC), można użyć różnych poziomów precyzji:
// Utwórz instancję Carbona z podanego znacznika czasu z precyzją do sekundy
c1 := carbon.CreateFromTimestamp(1596604455)
fmt.Println(c1.ToString()) // Wynik: "202-08-05 13:14:15 +080 CST"
// Dla większej precyzji (milisekundy) użyj `CreateFromTimestampMilli`
c2 := carbon.CreateFromTimestampMilli(1596604455999)
fmt.Println(c2.ToString()) // Wynik: "202-08-05 13:14:15.999 +080 CST"
// Dla mikrosekund użyj `CreateFromTimestampMicro`
c3 := carbon.CreateFromTimestampMicro(1596604455999999)
fmt.Println(c3.ToString()) // Wynik: "202-08-05 13:14:15.999999 +080 CST"
// A dla nanosekund użyj `CreateFromTimestampNano`
c4 := carbon.CreateFromTimestampNano(1596604455999999999)
fmt.Println(c4.ToString()) // Wynik: "202-08-05 13:14:15.999999999 +080 CST"
Tworzenie instancji z komponentów daty i godziny
Jeśli masz osobne składniki daty, takie jak rok, miesiąc i dzień, lub składniki czasu, takie jak godzina, minuta i sekunda, Carbon również potrafi nimi zarządzać.
// Utwórz instancję Carbona tylko z określoną datą
date := carbon.CreateFromDate(2022, 12, 25)
fmt.Println(date.ToDateString()) // Wynik: "2022-12-25"
// Utwórz instancję Carbona tylko z określonym czasem
time := carbon.CreateFromTime(23, 59, 59)
fmt.Println(time.ToTimeString()) // Wynik: "23:59:59"
// Utwórz instancję Carbona z zarówno datą, jak i czasem
dateTime := carbon.CreateFromDateTime(2022, 12, 25, 23, 59, 59)
fmt.Println(dateTime.ToDateTimeString()) // Wynik: "2022-12-25 23:59:59"
2.3 Parsowanie ciągów czasu
Obsługa reprezentacji daty i czasu jako ciągów znaków jest powszechnym scenariuszem. Carbon ułatwia analizowanie ciągów na instancje Carbon.
Używanie carbon.Parse
dla standardowych formatów czasu:
// Sparsuj ciąg znaków z datą i czasem
c := carbon.Parse("202-08-05 13:14:15", carbon.PRC)
if c.Error != nil {
fmt.Printf("Błąd: %v", c.Error)
} else {
fmt.Println(c.ToDateTimeString()) // Wynik: "202-08-05 13:14:15"
}
// Parsowanie ciągu sformatowanego zgodnie z RFC3339
rfc3339 := carbon.Parse("202-08-05T13:14:15+08:00")
fmt.Println(rfc3339.ToString()) // Wynik: "202-08-05 13:14:15 +080 CST"
Niestandardowe formaty za pomocą ParseByFormat
oraz ParseByLayout
Można również analizować ciągi znaków w określonym formacie, który nie jest bezpośrednio obsługiwany przez carbon.Parse
.
// Sparsuj ciąg czasu jako instancję Carbona zgodnie z formatem
byFormat := carbon.ParseByFormat("202|08|05 13|14|15", "2006|01|02 15|04|05")
fmt.Println(byFormat.ToDateTimeString()) // Wynik: "202-08-05 13:14:15"
// Sparsuj ciąg czasu jako instancję Carbona zgodnie z ukladem
byLayout := carbon.ParseByLayout("202|08|05", "2006|01|02")
fmt.Println(byLayout.ToDateString()) // Wynik: "202-08-05"
Obsługa błędów
Zawsze sprawdzaj pole Error
, aby upewnić się, że analiza zakończyła się sukcesem:
invalidDate := carbon.Parse("To nie jest data", carbon.PRC)
if invalidDate.IsInvalid() {
fmt.Println("Błąd podczas analizy daty:", invalidDate.Error)
}
Pamiętaj, że solidna kontrola błędów to kluczowy element pracy z datami i godzinami, aby zapobiec nieoczekiwanym wynikom lub awariom systemu.