गो में स्वरूपित स्ट्रिंग के रूप में वर्तमान समय प्राप्त करें?


131

गो में वर्तमान टाइमस्टैम्प प्राप्त करने और स्ट्रिंग में बदलने का सबसे अच्छा तरीका क्या है? मुझे उदाहरण के लिए तारीख और समय दोनों चाहिए। YYYYMMDDhhmmss प्रारूप।


1
यह आप सभी की जरूरत है golangprograms.com/…
Eduardo A. Fernández Díaz

जवाबों:


149

time.Now()फ़ंक्शन और time.Format()विधि का उपयोग करें ।

t := time.Now()
fmt.Println(t.Format("20060102150405"))

प्रिंट करता है 20110504111515, या कम से कम यह कुछ मिनट पहले किया था। (मैं पूर्वी डेलाइट समय पर हूं।) स्थिरांक में कई पूर्व-निर्धारित समय प्रारूप हैं समय पैकेज में परिभाषित ।

time.Now().UTC()यदि आप अपने स्थानीय समय क्षेत्र की अपेक्षा UTC रखते हैं तो आप इसका उपयोग कर सकते हैं ।


15
मुझे निश्चित रूप से Kitchenनिरंतर पसंद है ( = "3:04PM")
tux21b

5
उस जानकारी के लिए धन्यवाद। "20060102150405" पास करने से समय पैकेज कैसे पता चलता है, बस हम क्या कर रहे हैं, क्योंकि यह समय पैकेज में पूर्व-परिभाषित स्थिरांक में से एक नहीं है? समय पैकेज (20060102150405) में उस तिथि और समय का क्या महत्व है? यह मुझे थोड़ा अटपटा लगता है, लेकिन जब तक यह काम करता है मुझे लगता है कि इससे कोई फर्क नहीं पड़ता जब तक हम इसे कोड करते समय त्रुटि नहीं करते। मुझे लगता है कि वे उस प्रारूप के लिए एक निरंतर प्रदान करने के लिए फिट नहीं दिखते थे, और स्ट्रिंग पैटर्न से मेल खाते थे।
ब्रायनोह

9
@brianoh: देखें golang.org/pkg/time/#Constants यह समय है "01/02 15:04:05 06 -0700" क्योंकि प्रत्येक घटक एक अलग संख्या (1, 2, 3, आदि) है, यह उन संख्याओं से निर्धारित कर सकता है कि आपको क्या घटक चाहिए।
newacct

1
कृपया उस समय पर ध्यान दें। लॉकटाइम () अब मौजूद नहीं है: नीचे दिए गए मेरे उत्तर को देखें 1.0.3 संगत होने के लिए
Deleplace

71

अन्य सभी प्रतिक्रियाएं Google से आने वाले और "टाइमस्टैम्प इन गो" की तलाश करने वाले लोगों के लिए बहुत मिस-लीडिंग हैं! YYYYMMDDhhmmss "टाइमस्टैम्प" नहीं है।

जाने में एक तिथि का "टाइमस्टैम्प" प्राप्त करने के लिए (1970 से सेकंड की संख्या), सही फ़ंक्शन है। यूनिक्स () , और यह वास्तव में एक पूर्णांक लौटाता है।


8
मैं सहमत हूँ; प्रश्न का शीर्षक "वर्तमान तिथि" होना चाहिए न कि "वर्तमान टाइमस्टैम्प"
डेवलपर

1
हालांकि यह देर हो चुकी है, मुझे लगता है। यूनिक्स () को golang.org/pkg/time/#Time.Unix को इंगित करना चाहिए, जिसका रिटर्न प्रकार int64 है।
जन्म

जब आप तकनीकी रूप से सही होते हैं, तो मुझे लगता है कि इन दिनों बहुत सारे कोडर्स टाइमस्टैम्प को 'कुछ इस तरह के स्वरूपित फैशन में वर्तमान समय' के साथ भ्रमित करते हैं, ताकि शीर्षक सबसे अधिक समान रूप से भ्रमित हो।
रोजर हिल

मैं एक संपादन का सुझाव दिया है - Get current time as formatted string in Go?। उम्मीद है कि कोई इसे मंजूर करेगा।
अक्की

56

पठनीयता के लिए, समय पैकेज में आरएफसी स्थिरांक का उपयोग करना सबसे अच्छा है (मुझे लगता है)

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}

4
यह YYYYMMDDhhmmss का उत्पादन कैसे करता है?
रॉड

2
RFC850 Tuesday, 10-Nov-09 23:00:00 UTC RFC3339 = "2006-01-02T15:04:05Z07:00" play.golang.org/p/XmobwWSz5pN golang.org/pkg/time
क्रिस मैककी

32

समय का उपयोग करें। अब () और समय। फ़र्मैट () फ़ंक्शंस (समय के अनुसार। फोकल टाइम () गो 1.0% के रूप में मौजूद नहीं है)

t := time.Now()
fmt.Println(t.Format("20060102150405"))

ऑनलाइन डेमो (खेल के मैदान में अतीत में तय की गई तारीख, कभी दिमाग नहीं)


6
और आप इसे बस एक स्ट्रिंग की तरह उपयोग कर सकते हैं:s := "Actual time is: "+time.Now().String()
माइकल

3

इस पोस्ट में और अधिक जानकारी प्राप्त करें: प्राप्त करें गोलंग में विभिन्न प्रारूप में वर्तमान तिथि और समय प्राप्त करें

यह विभिन्न स्वरूपों का एक स्वाद है जो आपको पिछली पोस्ट में मिलेगा:

यहाँ छवि विवरण दर्ज करें


2

@ बैक्टिज्म की प्रतिक्रिया की प्रतिध्वनि के रूप में, जिस तरह से वर्तमान टाइमस्टैम्प (उदाहरण के लिए मिलीसेकंड में) को पुनर्प्राप्त करने के बारे में जाना जाएगा, वह है:

msec := time.Now().UnixNano() / 1000000

संसाधन: https://gobyexample.com/epoch


0

https://golang.org/src/time/format.go निर्दिष्ट समय के लिए पार्सिंग समय 15का उपयोग 04किया जाता है, मिनट के लिए, 05सेकंड के लिए उपयोग किया जाता है।

पार्स करने की तारीख के लिए 11, Jan, Januaryमहीनों के लिए है, 02, Mon, Mondayमाह का दिन के लिए,2006 वर्ष के लिए और निश्चित रूप सेMST क्षेत्र के लिए

लेकिन आप इस लेआउट का भी उपयोग कर सकते हैं, जो मुझे बहुत सरल लगता है। "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

डेमो


-4

सटीक प्रश्न का उत्तर देने के लिए:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

धन्यवाद सूरन, यह तब उपयोगी है जब समय स्टाम्प जीपीसी में भेजने की आवश्यकता है
rajeshk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.