Jaki jest najlepszy sposób uzyskania aktualnego znacznika czasu w Go i przekonwertowania go na ciąg? Potrzebuję zarówno daty, jak i godziny np. Format RRRRMMDDggmmss.
t := time.Now()
fmt.Println(t.Format("20060102150405"))
drukuje 20110504111515, a przynajmniej kilka minut temu. (Jestem na wschodnim czasie letnim). Istnieje kilka predefiniowanych formatów czasu w stałych zdefiniowanych w pakiecie czasu.
Możesz użyć, time.Now().UTC()jeśli wolisz czas UTC niż lokalną strefę czasową.
Zdecydowanie podoba mi się Kitchenstała ( = "3:04PM")
tux21b
5
Dzięki za te informacje. Skąd pakiet czasu wie po przekazaniu "20060102150405", po prostu co mijamy, skoro nie jest to jedna z predefiniowanych stałych w pakiecie czasu? Jakie znaczenie ma ta data i godzina w pakiecie czasu (20060102150405)? Wydaje mi się to trochę dziwaczne, ale przypuszczam, że dopóki działa, nie ma to znaczenia, o ile nie popełnimy błędu podczas kodowania. Wydaje mi się, że nie uznali za stosowne dostarczenia stałej dla tego formatu i dopasowania wzorca ciągu.
brianoh
9
@brianoh: patrz golang.org/pkg/time/#Constants Nadszedł czas „01/02 03:04:05 PM '06 -0700” Ponieważ każdy składnik ma inny numer (1, 2, 3 itd.), na podstawie liczb może określić, jakie składniki chcesz.
newacct
1
Zwróć uwagę, że time.LocalTime () już nie istnieje: zobacz moją odpowiedź poniżej, aby była kompatybilna z Go 1.0.3
Deleplace
71
Wszystkie inne odpowiedzi są bardzo chybione dla kogoś, kto pochodzi z Google i szuka „sygnatury czasowej w go”! RRRRMMDDhhmmss nie jest „datownikiem”.
Aby uzyskać „znacznik czasu” daty w ruchu (liczbę sekund od stycznia 1970 r.), Poprawna funkcja to .Unix () , która w rzeczywistości zwraca liczbę całkowitą
Zgadzam się; pytanie powinno być zatytułowane „aktualna data”, a nie „aktualna sygnatura czasowa”
developerbmw
1
Chociaż jest późno, myślę, że .Unix () powinno wskazywać na golang.org/pkg/time/#Time.Unix, którego typem zwracanym jest int64.
bornfree
Chociaż technicznie jesteście poprawni, myślę, że wielu programistów w dzisiejszych czasach łączy znacznik czasu z „Bieżącym czasem w jakiś sformatowany sposób”, więc ten tytuł byłby równie zagmatwany dla większości.
Roger Hill
Zaproponowałem edycję - Get current time as formatted string in Go?. Miejmy nadzieję, że ktoś to zaakceptuje.
akki
57
Dla czytelności najlepiej używać stałych RFC w pakiecie czasu (tak myślę)
Odpowiedzi:
Użyj
time.Now()
funkcji itime.Format()
metody.t := time.Now() fmt.Println(t.Format("20060102150405"))
drukuje
20110504111515
, a przynajmniej kilka minut temu. (Jestem na wschodnim czasie letnim). Istnieje kilka predefiniowanych formatów czasu w stałych zdefiniowanych w pakiecie czasu.Możesz użyć,
time.Now().UTC()
jeśli wolisz czas UTC niż lokalną strefę czasową.źródło
Kitchen
stała (= "3:04PM"
)Wszystkie inne odpowiedzi są bardzo chybione dla kogoś, kto pochodzi z Google i szuka „sygnatury czasowej w go”! RRRRMMDDhhmmss nie jest „datownikiem”.
Aby uzyskać „znacznik czasu” daty w ruchu (liczbę sekund od stycznia 1970 r.), Poprawna funkcja to .Unix () , która w rzeczywistości zwraca liczbę całkowitą
źródło
Get current time as formatted string in Go?
. Miejmy nadzieję, że ktoś to zaakceptuje.Dla czytelności najlepiej używać stałych RFC w pakiecie czasu (tak myślę)
import "fmt" import "time" func main() { fmt.Println(time.Now().Format(time.RFC850)) }
źródło
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeUżyj funkcji time.Now () i time.Format () (ponieważ time.LocalTime () nie istnieje już od Go 1.0.3)
t := time.Now() fmt.Println(t.Format("20060102150405"))
Demo online (z datą ustaloną w przeszłości na placu zabaw, nieważne)
źródło
s := "Actual time is: "+time.Now().String()
Znajdź więcej informacji w tym poście: Pobierz aktualną datę i godzinę w różnych formatach w golang
Oto przedsmak różnych formatów, które znajdziesz w poprzednim poście:
źródło
Jako echo odpowiedzi @ Bactisme, sposób pobierania aktualnego znacznika czasu (na przykład w milisekundach) jest następujący:
msec := time.Now().UnixNano() / 1000000
Zasób: https://gobyexample.com/epoch
źródło
https://golang.org/src/time/format.go określony Do analizy czas
15
jest używany do godzin,04
jest używany do minut,05
do sekund.Do parsowania Data
11
,Jan
,January
to przez kilka miesięcy,02
,Mon
,Monday
dla dnia miesiąca,2006
za rok i oczywiścieMST
dla strefyAle możesz również użyć tego układu, który uważam za bardzo prosty.
"Mon Jan 2 15:04:05 MST 2006"
const layout = "Mon Jan 2 15:04:05 MST 2006" userTimeString := "Fri Dec 6 13:05:05 CET 2019" t, _ := time.Parse(layout, userTimeString) fmt.Println("Server: ", t.Format(time.RFC850)) //Server: Friday, 06-Dec-19 13:05:05 CET mumbai, _ := time.LoadLocation("Asia/Kolkata") mumbaiTime := t.In(mumbai) fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850)) //Mumbai: Friday, 06-Dec-19 18:35:05 IST
PRÓBNY
źródło
Aby odpowiedzieć dokładnie na pytanie:
import "github.com/golang/protobuf/ptypes" Timestamp, _ = ptypes.TimestampProto(time.Now())
źródło