गो भाषा में यूनिक्स टाइमस्टैम्प प्राप्त करना (वर्तमान समय में सेकंड के बाद)


84

मेरे पास गो में लिखा हुआ कुछ कोड है जिसे मैं नवीनतम साप्ताहिक बिल्ड के साथ काम करने के लिए अपडेट करने की कोशिश कर रहा हूं। (इसे अंतिम बार r60 के तहत बनाया गया था)। सब कुछ अब निम्नलिखित बिट को छोड़कर काम कर रहा है:

 if t, _, err := os.Time(); err == nil {
   port[5] = int32(t)
 }

वर्तमान गो कार्यान्वयन के साथ काम करने के लिए इसे अपडेट करने के बारे में कोई सलाह?

जवाबों:


166
import "time"
...
port[5] = int32(time.Now().Unix())

41
ALERT: Unix()रिटर्न वैल्यू टाइप की होती है int64। टाइप int64वैल्यू को टाइप int32करना वर्ष 2038 की समस्या का एक उदाहरण है
पीटरसन

1
go1.9.2 darwin / amd64 यह लगातार रिटर्न देता है: 1969-12-31 19:00:00, जो लगभग: time.Unix (0, 0) के बराबर है। यह बिना छंटनी है।
ब्रीडली

31

यदि आप इसे चाहते हैं, तो stringबस इसे रूपांतरित करें strconv:

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
    fmt.Println(timestamp) // prints: 1436773875771421417
}

इसका क्या मतलब है? यदि कोई नंबर को स्ट्रिंग में बदलना चाहता है, तो वह यह पता लगा सकता है कि यह कैसे करना है। या हो सकता है कि मुझे केवल एक और उत्तर जोड़ना चाहिए: यदि आप इसे बायट्रेयर में बदलना चाहते हैं, तो बस [] बाइट (...) करें?
साल्वाडोर डाली

11
@ साल्वाडोरडाली वास्तव में यह वही है जो मुझे चाहिए था। आगे बढ़ो और अपने उत्तर को बाइट सरणी में बदलने के लिए जोड़ें यदि आप चाहते हैं कि मुझे यकीन है कि कोई व्यक्ति अंततः साथ आएगा और कोड की आवश्यकता होगी।
आनन ५ 21१

3
time.Now ()। UTC ()। UnixNano () को time.Now () के साथ बदला जा सकता है। UnixNano () - डॉक्टर का कहना है कि परिणाम t से जुड़े स्थान पर निर्भर नहीं करता है।
अबु जुनायड

16

एक और टिप। time.Now().UnixNano()(गॉडोक) आपको युग के बाद से नैनोसेकंड देगा। यह कड़ाई से यूनिक्स का समय नहीं है, लेकिन यह आपको एक ही युग का उपयोग करके उप दूसरी परिशुद्धता देता है, जो कि आसान हो सकता है।

संपादित करें: वर्तमान गोलंग आपी से मिलान करने के लिए परिवर्तित


1
मुझे पता है कि मैं एक पुराने धागे को फिर से जीवित कर रहा हूं, लेकिन मैं सोच रहा हूं ... पायथन स्पष्ट रूप से उन समस्याओं का दस्तावेजीकरण कर रहा है जो विभिन्न प्लेटफार्मों पर एक सटीक समय प्राप्त करने के साथ है। Docs.python.org/2/library/time.html देखें और "सटीक" खोजें। मुद्दा यह है: ऐसा इसलिए नहीं है क्योंकि आपके पास एक फ्लोट64 है जो सभी दशमलव महत्वपूर्ण हैं। गो का समय कैसे लागू किया जाता है, मैं इस नैनोसेकंड परिशुद्धता पर कितना भरोसा कर सकता हूं?
१०:४२ पर Niriel

5
यहाँ काम नहीं करता है, लेकिन time.Now().UnixNano()( संदर्भ ) करता है।
जो लिस

0

मानव-पठनीय व्याख्या प्राप्त करने के लिए, दूसरे उत्तर से विचार पर निर्माण, आप उपयोग कर सकते हैं:

package main

import (
    "fmt"
    "time"
)

func main() {
    timestamp := time.Unix(time.Now().Unix(), 0)
    fmt.Printf("%v", timestamp) // prints: 2009-11-10 23:00:00 +0000 UTC
}

इसे द गो प्लेग्राउंड में आज़माएं ।

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