Zaman ve tarih, zaman yönetimi yardımcı programlarından web uygulamalarına kadar birçok yazılımın önemli bileşenleridir. Bir programcı olarak, hangi dili kullanırsanız kullanın, saati ve tarihi nasıl değiştireceğinizi bilmeniz gerekir.

Go Uygulamalarında Saat ve Tarih Manipülasyonu

Go’da zaman paketi, saat ve tarih işleme işlevlerini bir araya getirir. Bu işlevlere, herhangi bir kaynak dosyadan, o paketi içe aktararak erişebilirsiniz.

Peki, saat ve tarihi değiştirmek ne anlama geliyor ve Go’da saat ve tarihi nasıl değiştirebilirsiniz?

Saat ve Tarih Manipülasyonu Nedir?

Programınızın gereksinimlerine göre, saatlerin ve tarihlerin davranışını veya temsilini kontrol etmesi, yönetmesi veya ayarlaması gerekebilir.

Farklı programlama dillerinin zaman ve tarih işleme için kendi işlevleri vardır. Go dili, bu amaç için yararlı olan kapsamlı yeteneklere sahiptir.

Saat ve tarih manipülasyonu şunları içerebilir:

Bir yerin veya saat diliminin geçerli saatini alma.

Saat ve tarihlerde aritmetik işlemler yapmak.

Saat ve tarihlerin giriş/çıkış biçimini değiştirme.

Go uygulamalarınızda saat ve tarihi değiştirmeye başlamak için, kullandığınız diğer paketlerin yanı sıra saat paketini içe aktarın.

import (

    “fmt”

    “time”

)

Go’da Geçerli Saat ve Tarih Nasıl Alınır

Zaman manipülasyonu için yaygın bir kullanım durumu, mevcut yerel saati veya belirli bir saat dilimi veya konumun geçerli saatini elde etmektir.

Yerel saatinizde veya belirli bir saat diliminde veya konumda saati ve tarihi almak için time.Now( ) ve time.LoadLocation() işlevlerini kullanabilirsiniz:

func main() {

    // Get the current time and date in Local time

    myTime := ime.Now()

    fmt.Println(“Current time in “, myTime.Location(), ” is: “, myTime)

    // Another way to get local time

    location, _ := time.LoadLocation(“Local”) // or time.LoadLocation(“”)

    fmt.Println(“Current time in “, location, ” is: “, time.Now().In(location))

    // another location

    location, _ = time.LoadLocation(“America/New_York”)

    fmt.Println(“Current time in “, location, ” is: “, myTime.In(location))

    // get the current time in Mountain Time Zone(MST)

    location, _ = time.LoadLocation(“MST”)

    fmt.Println(“Current time in “, location, ” is: “, myTime.In(location))

}

Yukarıdaki programı go run filename.go ile çalıştırmak , terminalde aşağıdaki çıktıyı üretir:

Geçerli saati almak için Go programının çıktısı

Go Uygulamalarında Saat ve Tarih Manipülasyonu

LoadLocation yöntemi, her konum ve saat dilimi kısaltmasını desteklemez. Go belgelerine göre , yalnızca IANA.org veritabanındaki konumları destekler .

Belirli Bir Tarihten Ayrı Bileşenler Nasıl Alınır

JavaScript’te saat ve tarihlerle çalışırken olduğu gibi, zaman damgasının her bir bileşenini ayrı ayrı alabilirsiniz .

Go’nun zaman işlevlerini kullanarak bunu gerçekleştirmenin birçok yolu vardır . Bu bölüm her yöntemi gösterir.

Gün, ay ve yılı almak için Date () işlevini ve saat, dakikayı ve saniyeyi almak için Clock() işlevini kullanabilirsiniz. Örneğin:

func main() {

    myTime := time.Now();

    year, month, day := myTime.Date()

    fmt.Println(“Year   :”, year)

    fmt.Println(“Month  :”, month)

    fmt.Println(“Day    :”, day)

    hour, min, sec := myTime.Clock()

    fmt.Println(“Hour :”, hour)

    fmt.Println(“Minute :”, min)

    fmt.Println(“Seconds :”, sec)

}

Çıktı, zaman damgasının farklı bölümlerini gösterir:

saat ve tarih almak için Go’daki kodun çıktısı

Ayrıca, her biri için zaman işlevleriyle birlikte zaman damgası birimlerini ayrı ayrı alabilirsiniz:

func main() {

    myTime := time.Now()

    // get each unit from Year to Nanosecond

    fmt.Println(“Year   :”, myTime.Year())

    fmt.Println(“Month  :”, myTime.Month())

    fmt.Println(“Day    :”, myTime.Day())

    fmt.Println(“Hour    :”, myTime.Hour())

    fmt.Println(“Minute  :”, myTime.Minute())

    fmt.Println(“Seconds :”, myTime.Second())

    fmt.Println(“Nanosecond :”, myTime.Nanosecond())

}

Çıktının gösterdiği gibi, bu ayrıca nanosaniyelere erişmenizi sağlar:

her zaman birimini almak için go programının çıktısı

Bu noktaya kadar olan örnekler, şimdiki zamandan zaman damgası birimlerini elde etmeye odaklanmıştır. Aynı tür eylemleri time.Now() olmayan bir zaman damgasında da gerçekleştirebilirsiniz .

Belirli bir tarihin yılını, ayını, gününü, saatini, dakikasını ve saniyesini çıkarabilirsiniz. Bunu yapmak için, ya yeni bir tarih nesnesi başlatmanız ya da tarihi bir dizgeden ayrıştırmanız gerekir:

func main() {

    // get individual components of the time from Year to Nanosecond

   // from a specific date

    yourTime := time.Date(2020, 07, 1, 06, 32, 10, 0, time.UTC)

    fmt.Println(“Year   :”, yourTime.Year())

    fmt.Println(“Month  :”, yourTime.Month())

    fmt.Println(“Day    :”, yourTime.Day())

    fmt.Println(“Hour    :”, yourTime.Hour())

    fmt.Println(“Minute  :”, yourTime.Minute())

    fmt.Println(“Seconds :”, yourTime.Second())

    fmt.Println(“Nanosecond :”, yourTime.Nanosecond())

    // using the Clock() function to get hour, minute, and second

    yourHour, yourMin, yourSec := yourTime.Clock()

    fmt.Println(“Hour    :”, yourHour)

    fmt.Println(“Minute  :”, yourMin)

    fmt.Println(“Seconds :”, yourSec)

    // get time and date from string

    dateString := “2020-07-01 06:32:10”

    layout := “2006-01-02 15:04:05” // your desired output format

    yourTime, _ = time.Parse(layout, dateString)

    fmt.Println(“Your time is: “, yourTime)

    fmt.Println(“Year   :”, yourTime.Year())

    fmt.Println(“Month  :”, yourTime.Month())

    fmt.Println(“Day    :”, yourTime.Day())

    fmt.Println(“Hour    :”, yourTime.Hour())

    fmt.Println(“Minute  :”, yourTime.Minute())

    fmt.Println(“Seconds :”, yourTime.Second())

}

Bu kod aşağıdaki çıktıyı üretir:

zamanın bireysel bileşenini almak için kod çıktısı

Tarih dizesinde bir saat dilimi belirtmezseniz Parse() öğesinin varsayılan olarak UTC kullandığını unutmayın.

Tarih ve Saat İle Aritmetik İşlemler Nasıl Yapılır?

Go Uygulamalarında Saat ve Tarih Manipülasyonu

Aritmetik işlemler, Go’da saat ve tarihte gerçekleştirebileceğiniz başka bir işleme türüdür. Toplama, çıkarma ve zaman farkı gibi basit işlemlerin tümü mümkündür.

Go, time.Süre değerlerini tüm zaman birimleriyle tanımlamanıza olanak tanır.Saatten zamana.Nanosaniye . Add() kullanarak zaman eklemek veya çıkarmak için bu değerleri kullanabilirsiniz . Ayrıca 3 parametre alan bir AddDate() işlevi vardır: toplama veya çıkarma yapmak için yıllar, aylar ve günler.

Aşağıdaki kod, bu işlevlerin kullanımını gösterir:

func main() {

    curTime := time.Now()

    curTime = curTime.Add(time.Hour) // adds one hour

    fmt.Println(“Current time is: “, curTime)

    tomorrow := curTime.Add(time.Hour * 24)

    fmt.Println(“This time tomorrow is: “, tomorrow)

    nextWeek := curTime.Add(time.Hour * 24 * 7)

    fmt.Println(“This time next week is: “, nextWeek)

    // using AddDate(y,m,d)

    nextTomorrow := curTime.AddDate(0, 0, 2)

    fmt.Println(“This time Next tomorrow is: “, nextTomorrow)

    nextMonth := curTime.AddDate(0, 1, 0)

    fmt.Println(“This time next month is: “, nextMonth)

    fiveYearsAndOneMonthAfter := curTime.AddDate(5, 1, 0)

    fmt.Println(“This time five years and one month after is: “, fiveYearsAndOneMonthAfter)

}

Hangi aşağıdaki çıktıyı üretir:

saat ve tarih ekleme için go programının çıktısı

Negatif parametreler ileterek Add() ve AddDate() ile zamanı da çıkarabilirsiniz . Örneğin:

func main() {

    curTime := time.Now()

    // subtract one day using AddDate()

    yesterday := curTime.AddDate(0, 0, -1)

    fmt.Println(“This time yesterday was: “, yesterday)

    // subtract one month using Add()

    lastMonth := curTime.Add(time.Hour * -24 * 30)

    fmt.Println(“This time last month was: “, lastMonth)

}

Bu çıktıyı üretir:

saat ve tarihi çıkarmak için programın çıktısı

Tarihler arasındaki farkı bulmak için Add() ve AddDate() ‘i kullanabilmenize rağmen , Go’nun biraz farklı çalışan bir Sub() işlevi vardır:

func main() {

    curTime = time.Now()

    past := time.Date(2022, time.December, 25, 12, 0, 0, 0, time.UTC)

    diff := past.Sub(curTime)

    fmt.Println(“Difference between now and the past is: “, diff)

    // get the difference in various units

    years := int(diff.Hours() / 24 / 365)

    fmt.Println(“Years: “, years)

    months := int(diff.Hours() / 24 / 30)

    fmt.Println(“Months: “, months)

    days := int(diff.Hours() / 24)

    fmt.Println(“Days: “, days)

    hours := int(diff.Hours())

    fmt.Println(“Hours: “, hours)

    // diff.Minutes(), diff.Seconds(), diff.Milliseconds(), diff.Nanoseconds() also return their units

}

Bu kod aşağıdaki çıktıyı üretir:

saat ve tarih farkını almak için programın çıktısı

Çeşitli Formatlarda Saat ve Tarih Nasıl Alınır

Format() işlevini kullanarak birden çok biçimde saat ve tarih çıktıları da alabilirsiniz . İşte bazı yaygın biçimlendirme stilleri:

func main() {

    curTime = time.Now()

    // built-in standard formatting  styles

    fmt.Println(“Current time is: “, curTime)

    fmt.Println(“Current time in RFC3339 format is: “, curTime.Format(time.RFC3339))

    fmt.Println(“Current time in RFC3339Nano format is: “, curTime.Format(time.RFC3339Nano))

    fmt.Println(“Current time in RFC1123 format is: “, curTime.Format(time.RFC1123))

    fmt.Println(“Current time in RFC1123Z format is: “, curTime.Format(time.RFC1123Z))

    fmt.Println(“Current time in RFC822 format is: “, curTime.Format(time.RFC822))

    fmt.Println(“Current time in RFC822Z format is: “, curTime.Format(time.RFC822Z))

    fmt.Println(“Current time in RFC850 format is: “, curTime.Format(time.RFC850))

    fmt.Println(“Current time in ANSIC format is: “, curTime.Format(time.ANSIC))

    fmt.Println(“Current time in Unix format is: “, curTime.Format(time.UnixDate))

    // custom formatting styles

    // DD-MM-YYYY HH:MM:SS

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02-01-2006 15:04:05”))

    // MM-DD-YYYY HH:MM:SS

    fmt.Println(“Current time in custom format is: “, curTime.Format(“01-02-2006 15:04:05”))

    // YYYY-MM-DD HH:MM:SS

    fmt.Println(“Current time in custom format is: “, curTime.Format(“2006-01-02 15:04:05”))

    // DD.MM.YYYY

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02.01.2006”))

    // DD/MM/YYYY

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02/01/2006”))

    // 01 Feb 2006

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02 Jan 2006”))

    // 01 February 2006 Monday

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02 February 2006 Monday”))

    // 01 February 2006 Mon 15:04:05

    fmt.Println(“Current time in custom format is: “, curTime.Format(“02 February 2006 Mon 15:04:05”))

}

Bu farklı biçimlendirme türleri aşağıdaki çıktıyı üretir:

farklı formatlarda programda saat ve tarih çıktısı

Go’da Saati ve Tarihi Değiştirme

Saatler ve tarihler üzerinde yapabileceğiniz manipülasyonların listesi neredeyse sonsuzdur. Başvurunuzun kapsamına bağlı olarak çok çeşitli tarih/saat işlemleri yapmanız gerekebilir.

Sahip olabileceğiniz herhangi bir kullanım durumu için, zaman paketi çok işlevseldir ve birçok yerleşik yönteme sahiptir.

Basit bir günlük planlayıcı veya görev zamanlayıcı uygulaması oluşturmak için tarih ve saat manipülasyonunu kullanabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir