2012-06-19 19 views
11

सी # में टाइमस्पेन कक्षा है। यह समय की अवधि का प्रतिनिधित्व करता है और कई तारीख मैनिपुलेशन विकल्पों से वापस आ जाता है। आप एक बना सकते हैं और दिनांक आदि से जोड़ या घटा सकते हैं।क्या रूबी के पास सी # में टाइमस्पेन के बराबर है?

रूबी में और विशेष रूप से रेलों में बहुत सारी तारीख और समय कक्षाएं होती हैं लेकिन कुछ भी समय की अवधि का प्रतिनिधित्व नहीं करता है?

आदर्श रूप में मुझे एक ऐसा ऑब्जेक्ट चाहिए जो मैं मानक दिनांक स्वरूपण विकल्पों का उपयोग करके प्रारूपित तिथियों को आसानी से आउटपुट करने के लिए उपयोग कर सकता हूं।

उदाहरण के लिए।

ts.to_format("%H%M") 

क्या ऐसी कक्षा है?

और भी बेहतर अगर मैं की तरह

ts = end_date - start_date 

मैं वाकिफ हूँ अलग सेकंड की संख्या में की दो तिथियों के परिणामों को घटाकर ने कहा कि दिनांक और मुझे लगता है कि यह सब से बाहर काम कर सकता है कि कुछ कर सकते हैं होगा।

उत्तर

1

अंत में मैं @ tokland के जवाब में सुझाव काँटेदार। काफी सुनिश्चित नहीं हैं कि यह एक उचित मणि बनाने के लिए लेकिन यह वर्तमान में मेरे लिए काम कर रहा है:

Timespan fork of time_diff

+0

बेनामी डाउनवॉटर लंगड़ा हैं। – toxaq

6

आप इस तरह कुछ इसी तरह कर सकते हैं:

irb(main):001:0> require 'time'   => true 
irb(main):002:0> initial = Time.now  => Tue Jun 19 08:19:56 -0400 2012 
irb(main):003:0> later = Time.now  => Tue Jun 19 08:20:05 -0400 2012 
irb(main):004:0> span = later - initial => 8.393871 
irb(main):005:0> 

यह सिर्फ सेकंड, जिसमें एक समय देता है कि सभी सुंदर को देखने के लिए नहीं है, आप इसे आकर्षक बनाने के लिए strftime() फ़ंक्शन का उपयोग कर सकते हैं:

irb(main):010:0> Time.at(span).gmtime.strftime("%H:%M:%S") => "00:00:08" 
+0

यह वास्तव में क्या मैं इस समय कर रहा हूँ होता है। इसमें 24 घंटे से अधिक समय के अंतर को दिखाने में सक्षम नहीं होने की सीमा है। – toxaq

+0

@toxaq द टाइम वास्तव में तिथियों और टाइम्स का एक अमूर्त है, जो नाम को भ्रमित कर सकता है। आप किसी दिए गए वर्ष/माह/दिन/घंटा/मिनट/सेकेंड के लिए समय वस्तुएं बना सकते हैं और उन पर अतिरिक्त और घटाव कर सकते हैं। http://www.ruby-doc.org/core-1.9.3/Time.html –

+0

हालांकि यह एक समय के बारे में दिलचस्प बात है, लेकिन इसमें किसी और चीज के संदर्भ में इसकी जगह की कोई अवधारणा नहीं है। यह कुछ अच्छे एक्सेसर तरीकों के साथ केवल एक गौरवशाली int है। – toxaq

1

नहीं, ऐसा नहीं है। आप बस सेकंड जोड़ सकते हैं या advance विधि का उपयोग कर सकते हैं।

end_date - start_dateFloat प्रकार

3

कुछ इस तरह होगा? https://github.com/abhidsm/time_diff

require 'time_diff' 
time_diff_components = Time.diff(start_date_time, end_date_time) 
+0

यह वास्तव में दिलचस्प लगता है धन्यवाद। काफी कुछ नहीं जो मैं चाहता था लेकिन मैं निश्चित रूप से इसके साथ काम कर सकता हूं या व्युत्पन्न कर सकता हूं। – toxaq

0

अभी तक नहीं @toxaq ... लेकिन मैं कुछ शुरू कर दिया है!

https://gist.github.com/thatandyrose/6180560

class TimeSpan 
attr_accessor :milliseconds 

def self.from_milliseconds(milliseconds) 
    me = TimeSpan.new 
    me.milliseconds = milliseconds 
    return me 
end 

def self.from_seconds(seconds) 
    TimeSpan.from_milliseconds(seconds.to_d * 1000) 
end 

def self.from_minutes(minutes) 
    TimeSpan.from_milliseconds(minutes.to_d * 60000) 
end 

def self.from_hours(hours) 
    TimeSpan.from_milliseconds(hours.to_d * 3600000) 
end 

def self.from_days(days) 
    TimeSpan.from_milliseconds(days.to_d * 86400000) 
end 

def self.from_years(years) 
    TimeSpan.from_days(years.to_d * 365.242) 
end 

def self.diff(start_date_time, end_date_time) 
    TimeSpan.from_seconds(end_date_time - start_date_time) 
end 

def seconds 
    self.milliseconds.to_d * 0.001 
end 

def minutes 
    self.seconds.to_d * 0.0166667 
end 

def hours 
    self.minutes.to_d * 0.0166667 
end 

def days 
    self.hours.to_d * 0.0416667 
end 

def years 
    self.days.to_d * 0.00273791 
end 
end 
+0

कूल, मणि टोकलैंड में जो कुछ भी हो रहा है, उससे बहुत अच्छा है, जिसे मैंने प्राप्त करने के लिए मजबूर किया था। – toxaq

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