2012-11-08 9 views
12

मुझे युग के बाद मिलीसेकंड के साथ एक स्ट्रिंग मिली है (यह मूल रूप से java.lang.System.currentTimeMillis() कॉल से आया था)। इस स्ट्रिंग को मानव में पठनीय टाइमस्टैम्प स्ट्रिंग में परिवर्तित करने का सही तरीका क्या है?गो में मिलीसेकंड-से-युग टाइमस्टैम्प स्ट्रिंग को कैसे पार्स करें?

the time package पर देखकर मैं Parse फ़ंक्शन देखता हूं, लेकिन लेआउट सभी सामान्य टाइमज़ोन-आधारित समय प्रतीत होते हैं। एक बार ऑब्जेक्ट में, मैं आउटपुट प्राप्त करने के लिए Format(Time.Stamp) का उपयोग कर सकता हूं, लेकिन मैं स्ट्रिंग को टाइम ऑब्जेक्ट में कैसे प्राप्त करना है, इस बारे में स्पष्ट नहीं हूं।

उत्तर

22

प्रारूप स्ट्रिंग युग के बाद मिलीसेकंड का समर्थन नहीं करती है, इसलिए आपको मैन्युअल रूप से पार्स करने की आवश्यकता है। उदाहरण के लिए:

func msToTime(ms string) (time.Time, error) { 
    msInt, err := strconv.ParseInt(ms, 10, 64) 
    if err != nil { 
     return time.Time{}, err 
    } 

    return time.Unix(0, msInt*int64(time.Millisecond)), nil 
} 

चेक बाहर http://play.golang.org/p/M1dWGLT8XE उदाहरण रहते हैं साथ खेलने के लिए।

+0

त्वरित उत्तर और इंटरैक्टिव कोड लिंक के लिए धन्यवाद! –

+0

आपका समाधान काम करता है, लेकिन यह 'time.Unix' का लाभ ले रहा है जो सीमा के नैनोसेकंद मान को समायोजित करता है। आप मिलीसेकंड को नैनोसेकंड में परिवर्तित कर रहे हैं, लेकिन यह अनदेखा कर रहे हैं कि आपको वास्तव में मिलीसेकंड को सेकंड में और शेष नैनोसेकंड में परिवर्तित करना चाहिए। यहां आपके समाधान का अनुकूलन है: http://play.golang.org/p/XKHNPkSqgx। – seh

+3

और अधिक काम क्यों करना मुश्किल है और जब आप stdlib ने इसे आपके लिए किया है तो आप गलत हो सकते हैं? दस्तावेज़ों से: 'यह सीमा [0, 99 99 99 999] के बाहर एनएससी पास करने के लिए मान्य है।' Https://golang.org/pkg/time/#Unix –

संबंधित मुद्दे