रूबी में UTC टाइमस्टैम्प कैसे प्राप्त करें?


जवाबों:


117
time = Time.now.getutc

Rationale: मेरी नज़र में एक टाइमस्टैम्प बिल्कुल वैसा ही है: A पॉइंट इन टाइम। इसे एक वस्तु के साथ सटीक रूप से दर्शाया जा सकता है। यदि आपको कुछ और चाहिए, तो एक स्केलर मान, जैसे यूनिक्स की अवधि के बाद के सेकंड, 1601 के बाद से 100-एनएस अंतराल या प्रदर्शन उद्देश्यों के लिए एक स्ट्रिंग या डेटाबेस में टाइमस्टैम्प को संग्रहीत करने के लिए, आप आसानी से ऑब्जेक्ट से प्राप्त कर सकते हैं। लेकिन यह आपके इच्छित उपयोग पर बहुत अधिक निर्भर करता है।

यह कहना कि »एक सच्चा टाइमस्टैम्प कुछ सेकंड की संख्या है क्योंकि यूनिक्स युग के बाद« यह बिंदु थोड़ा गायब है, क्योंकि यह समय में एक बिंदु का प्रतिनिधित्व करने का एक तरीका है, लेकिन यह भी अतिरिक्त जानकारी की आवश्यकता है कि आपको पता है कि आप के साथ काम कर रहे हैं एक समय और एक संख्या नहीं। एक Timeवस्तु समय में एक बिंदु का प्रतिनिधित्व करके इस समस्या को अच्छी तरह से हल करती है और यह भी स्पष्ट है कि यह क्या है


93
वह समय वस्तु देता है, आपको
समयसमय पर

3
मेरे ऑपिनियन में एक ऑब्जेक्ट टाइमस्टैम्पि पर्याप्त है और आपके पास अभी भी आपकी ज़रूरत की सभी स्वतंत्रता है। इसे स्केलर मूल्य पर कम करना वास्तव में आवश्यक नहीं है।
जॉय

2
टाइमस्टैम्प युग के सापेक्ष हैं - इससे कोई फर्क नहीं पड़ता कि आप किस टाइमज़ोन में हैं। मैनज़िकोव का जवाब बेहतर है।
रयान मोहर

2
हालांकि यूनिक्स टाइमस्टैम्प का उपयोग क्यों नहीं करना है, इसका एक अच्छा विवरण, यह ओपी प्रश्न का उत्तर नहीं देता है (और न ही एक ही प्रश्न जब मुझे यह पोस्ट मिला था)। कई मामलों में यूनिक्स टाइमस्टैम्प की आवश्यकता होती है (उदाहरण के लिए, एपीआई के लिए)। स्पष्टीकरण के बाद भी, इस जवाब ने टाइमस्टैम्प प्राप्त करने का वास्तविक तरीका नहीं दिया।
अटक गया

5
@stuckj, बिना किसी सवाल के यूनिक्स टाइमस्टैम्प का उल्लेख करता है। मैं सिर्फ इस उत्तर के लिए नीचे उतरना जारी रखता हूं क्योंकि लोगों को लगता है कि »टाइमस्टैम्प == यूनिक्स समय«, इसलिए स्पष्टीकरण।
जोए

247

आप उपयोग कर सकते हैं Time.now.to_i:।


1
यह Time.now.getutc.to_i करने के लिए और अधिक समझ में आता है? या कि अनिवार्य रूप से बराबर है?
अटक गया

20
टाइमस्टैम्प सभी टाइमज़ोन में समान है। :)
मँझिकोव

2
ओह, हाँ। दिमागी सवाल। :)
०१:४० पर अटक गया

यह सबसे उपयुक्त प्रतिक्रिया है!
डर्लन डाइटरीच

46

मेरी राय में, डिफ़ॉल्ट स्वरूपण बहुत उपयोगी नहीं है। मैं ISO8601 को पसंद करता हूं, क्योंकि यह क्रमबद्ध, अपेक्षाकृत कॉम्पैक्ट और व्यापक रूप से मान्यता प्राप्त है:

>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"

1
ध्यान दें कि यह विधि ActiveSupport से आती है, मानक लाइब्रेरी rubydoc.info/docs/rails/ActiveSupport%2FTimeWithZone:iso8601 में नहीं
n0nick

3
@ n0nick क्या आपको यकीन है, 2.0 में भी? मुझे पता है कि मैंने इसे "वेनिला" पर स्थापित किया है, बिना पटरियों आदि के, और यह अंदर है /usr/share/ruby/2.0/time.rb
टिम सिल्वेस्टर

15

आमतौर पर टाइमस्टैम्प में कोई समयक्षेत्र नहीं होता है।

% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true

1
to_fबेहतर होगा
xis

1
हालात के उपर निर्भर।
युकी मतसुकुर

1
टाइमस्टैम्प में टाइमजोन कब होता है?
डेनिस

1
टाइमस्टैम्प समय क्षेत्र से संबंधित नहीं है। दूसरे शब्दों में, टाइमस्टैम्प यूटीसी है।
युकी मतसुकुर

1
@YukiMatsukura वास्तव में, यह पूरी तरह से सही भी नहीं है। एक समय टिकट भी किसी भी समय क्षेत्र का प्रतिनिधित्व नहीं करता है, इसलिए "टाइमस्टैम्प यूटीसी है" उतना ही सच है जितना कि "टाइमस्टैम्प हाथी हाथी है"। समस्या प्रतिनिधित्व में है। अधिकांश देवता इसे यूनिक्स समय टिकट के रूप में दर्शाते हैं (जो यूटीसी या किसी अन्य समय क्षेत्र को इंगित नहीं करता है क्योंकि यह केवल पूर्णांक मूल्य है)।
पेलेमिस्टर

10

अगर आपको मानव-पठनीय टाइमस्टैम्प चाहिए (जैसे रेल का माइग्रेशन है) पूर्व। " 20190527141340 "

Time.now.utc.to_formatted_s(:number)  # using Rails

Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby

7

सेकंड में दी गई ग्रैन्युलैरिटी के साथ टाइमस्टैम्प कितना अच्छा है? मुझे लगता है कि यह बहुत अधिक व्यावहारिक है Time.now.to_f। बिल्ली, तुम भी to_s.sub('.','')दशमलव बिंदु से छुटकारा पाने के लिए फेंक सकते हैं , या इस तरह एक टाइपकास्ट प्रदर्शन कर सकते हैं Integer(1e6*Time.now.to_f):।


धन्यवाद। मैंने इसका उपयोग किया: Integer(1e3*Time.now.to_f)ताकि मेरा सर्वर साइड रूबी टाइमस्टैम्प क्लाइंट साइड जावास्क्रिप्ट के समान होDate.now()
joshweir


-2

time = Time.zone.now()

यह के रूप में काम करेगा

irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC

जोनाथन, क्या आप मुझे बता सकते हैं कि इस उत्तर में क्या गलत है?
तारांकन चिह्न

1
यह इस बात पर निर्भर करता है कि रूबी चीजें स्थानीय समय क्षेत्र क्या हैं। यह तभी अपेक्षित होगा जब स्थानीय टीबी यूटीसी हो।
मास्टरशेफिनरेटर

-6

उचित तरीका यह है Time.now.getutc.to_iकि उचित टाइमस्टैम्प राशि प्राप्त करने के लिए केवल समय के अंतर के कारण पूर्णांक की आवश्यकता हमेशा ही नहीं होनी चाहिए क्योंकि utc टाइमस्टैम्प के समान ही होना चाहिए।


7
बाकी सभी ने कहा कि, तो बस इसे कॉपी करें, बिना किसी नई जानकारी के, 3 साल देर से?
कास्पर ली

2
और कोई विराम चिह्न के साथ जो 1 वाक्य बना देगा, जो थोड़ा बहुत लंबा है और पूरी तरह से वाक्यविन्यास सही नहीं है।
एमिल व्रजदग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.