Analysera ett datum från en sträng

Go:
Analysera ett datum från en sträng

Hur man gör:

Go erbjuder robust stöd för att tolka datum och tider genom time-paketet. Nyckeln är att förstå Go:s referensdatumformat: Mon Jan 2 15:04:05 MST 2006, som du använder för att berätta för Go hur den inkommande strängen ska tolkas. Här är ett snabbt exempel för att komma igång:

package main

import (
	"fmt"
	"time"
)

func main() {
	// Exempel på datumsträng
	dateStr := "2023-04-12 14:45:00"
	
	// Definiera layout/format på den inkommande datumsträngen
	// Denna layout talar om för Go att förvänta sig ett år, följt av en månad, 
	// sedan en dag, timme, minut och slutligen sekund
	layout := "2006-01-02 15:04:05"
	
	// Tolka datumsträngen enligt layouten
	parsedDate, err := time.Parse(layout, dateStr)
	if err != nil {
		fmt.Println("Fel vid tolkning av datum:", err)
		return
	}
	
	// Skriv ut det tolkade datumet
	fmt.Println("Tolkat Datum:", parsedDate)
}

När du kör denna kod får du:

Tolkat Datum: 2023-04-12 14:45:00 +0000 UTC

Observera hur layout-strängen använder referensdatumets värden för att specificera formatet på indatasträngen. Justera layout för att matcha formatet på dina indata datum.

Fördjupning

Designen av Go:s datum- och tidstolkning är unik, och använder ett specifikt referensdatum (Mon Jan 2 15:04:05 MST 2006). Detta tillvägagångssätt, istället för att använda mer konventionella formatangivelser (som YYYY för år), valdes för läsbarhet och enkelhet, och utnyttjar ett mer exempelbaserat format.

Även om detta initialt kan verka ovanligt för programmerare vana vid andra språk, finner många det mer intuitivt efter en kort justeringsperiod. För applikationer som kräver mer komplex datummanipulation eller format som inte direkt stöds av Go:s time-paket, kan tredjepartsbibliotek som github.com/jinzhu/now erbjuda ytterligare funktionalitet. Dock, för majoriteten av standardapplikationer, är Go:s inbyggda funktioner robusta, prestandaeffektiva och idiomatiska, och förkroppsligar Go-filosofin om enkelhet och klarhet.