2015-01-16 7 views
25

मुझे वर्तमान समय-अलग-अलग समय में वर्तमान समय प्राप्त करने की आवश्यकता है।गोलांग में अन्य समय क्षेत्र में वर्तमान टाइमस्टैम्प कैसे प्राप्त करें?

वर्तमान में मुझे पता है कि हम निम्न कर सकते हैं:

t := time.Now() 
fmt.Println("Location:", t.Location(), ":Time:", t) 
utc, err := time.LoadLocation("America/New_York") 
if err != nil { 
    fmt.Println("err: ", err.Error()) 
} 
fmt.Println("Location:", utc, ":Time:", t.In(utc)) 

LoadLocation नाम IANA समय क्षेत्र डेटाबेस में एक फाइल करने के लिए इसी स्थान का नाम शामिल, के रूप में "America/New_York" इस तरह के होने के लिए लिया जाता है।

क्या वर्तमान समय प्राप्त करने का कोई आसान तरीका है, अगर देश का नाम, या जीएमटी ऑफसेट भारत के लिए +530 दिया गया है?

संपादित करें: मैं डे लाइट बचत का भी समर्थन करना चाहता हूं।

+1

हालांकि कुछ मामलों में जहां एक तय ऑफसेट उपयोग कर रही है उचित है, आम तौर पर यह 'महाद्वीप/City' उपयोग करने के लिए बेहतर है। समय क्षेत्र और डेलाइट बचत नियम राजनीतिक और परिवर्तन हैं। 'महाद्वीप/शहर' का उपयोग करने से आपके एप्लिकेशन को उन परिवर्तनों को समायोजित करने की अनुमति मिल जाएगी क्योंकि अंतर्निहित आईएएनए समय क्षेत्र डेटाबेस अद्यतन किया गया है। यह आपके लिए डेलाइट बचत का भी ख्याल रखेगा। – Schwern

उत्तर

10

नहीं, यह सबसे अच्छा तरीका है। आप FixedZone का उपयोग करके अपना कस्टम Location बना सकते हैं और उस कस्टम स्थान का उपयोग कर सकते हैं।

FixedZone एक स्थान है जो हमेशा दिए गए क्षेत्र का नाम और ऑफसेट (सेकंड यूटीसी के पूर्व) का उपयोग करता देता है।

+3

धन्यवाद Fabrizio! मैं डेलाइट बचत का भी समर्थन करना चाहता हूं। उस पर कोई संकेतक? –

+1

मुझे कस्टम डेलाइट सेविंग सेटिंग्स को परिभाषित करने के बारे में पता नहीं है, लेकिन डेटाबेस से टाइम जोन पहले ही डेलाइट सेविंग का समर्थन करते हैं। – MffnMn

13
//init the loc 
loc, _ := time.LoadLocation("Asia/Shanghai") 

//set timezone, 
now := time.Now().In(loc) 
+2

मुझे लगता है कि आपका मतलब है अब: = time.अब()। (लोक) –

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