मेरे पास कई सेकंड हैं। आइए 270 9 21 कहें। मैं उस नंबर को कैसे प्रदर्शित कर सकता हूं कि यह xx दिन, yy hours, zz मिनट, ww सेकेंड है?270 9 21sec को दिनों में कैसे परिवर्तित करें + घंटे + मिनट + सेकंड? (रूबी)
उत्तर
यह बहुत किया जा सकता है संक्षेप में divmod
का उपयोग कर: आप इसके कार्यान्वयन देख सकते हैं
t = 270921
mm, ss = t.divmod(60) #=> [4515, 21]
hh, mm = mm.divmod(60) #=> [75, 15]
dd, hh = hh.divmod(24) #=> [3, 3]
puts "%d days, %d hours, %d minutes and %d seconds" % [dd, hh, mm, ss]
#=> 3 days, 3 hours, 15 minutes and 21 seconds
आप शायद यह collect
, या हो सकता है inject
के साथ रचनात्मक हो रही द्वारा आगे सूख सकता है, लेकिन जब कोर तर्क है तीन लाइनें यह अधिक हो सकती है।
रेल के पास एक सहायक है जो शब्दों में समय की दूरी को परिवर्तित करता है। distance_of_time_in_words
क्या रेल के बाहर इसका उपयोग करने का कोई तरीका है? – Kostas
हां। एक्शन व्यू :: हेल्पर्स :: डेटहेल्पर शामिल करें! –
a = distance_of_time_in_words (from_time, from_time + 50.minutes) => "लगभग 1 घंटा" 1.9.2-p290: 035> –
मैं वहाँ उम्मीद थी divmod का उपयोग करने से एक आसान तरीका होगा, लेकिन यह सबसे अधिक सूखी और पुन: प्रयोज्य तरह से मैं यह करने के लिए मिल गया है:
def seconds_to_units(seconds)
'%d days, %d hours, %d minutes, %d seconds' %
# the .reverse lets us put the larger units first for readability
[24,60,60].reverse.inject([seconds]) {|result, unitsize|
result[0,0] = result.shift.divmod(unitsize)
result
}
end
विधि आसानी से प्रारूप स्ट्रिंग को बदलने के द्वारा निकाला जाता है और पहली इनलाइन सरणी (यानी [24,60,60])।
बढ़ी संस्करण
class TieredUnitFormatter
# if you set this, '%d' must appear as many times as there are units
attr_accessor :format_string
def initialize(unit_names=%w(days hours minutes seconds), conversion_factors=[24, 60, 60])
@unit_names = unit_names
@factors = conversion_factors
@format_string = unit_names.map {|name| "%d #{name}" }.join(', ')
# the .reverse helps us iterate more effectively
@reversed_factors = @factors.reverse
end
# e.g. seconds
def format(smallest_unit_amount)
parts = split(smallest_unit_amount)
@format_string % parts
end
def split(smallest_unit_amount)
# go from smallest to largest unit
@reversed_factors.inject([smallest_unit_amount]) {|result, unitsize|
# Remove the most significant item (left side), convert it, then
# add the 2-element array to the left side of the result.
result[0,0] = result.shift.divmod(unitsize)
result
}
end
end
उदाहरण:
fmt = TieredUnitFormatter.new
fmt.format(270921) # => "3 days, 3 hours, 15 minutes, 21 seconds"
fmt = TieredUnitFormatter.new(%w(minutes seconds), [60])
fmt.format(5454) # => "90 minutes, 54 seconds"
fmt.format_string = '%d:%d'
fmt.format(5454) # => "90:54"
नोट format_string
आप भागों के आदेश को बदल नहीं दूँगा कि (यह हमेशा कम से कम करने के लिए सबसे महत्वपूर्ण मूल्य है)। बेहतर अनाज नियंत्रण के लिए, आप split
का उपयोग कर सकते हैं और मानों को स्वयं में कुशल बना सकते हैं।
मैं बस रूबी लिखना शुरू करता हूं। मैं लगता है कि यह केवल 1.9.3
def dateBeautify(t)
cute_date=Array.new
tables=[ ["day", 24*60*60], ["hour", 60*60], ["minute", 60], ["sec", 1] ]
tables.each do |unit, value|
o = t.divmod(value)
p_unit = o[0] > 1 ? unit.pluralize : unit
cute_date.push("#{o[0]} #{unit}") unless o[0] == 0
t = o[1]
end
return cute_date.join(', ')
end
के लिए है आप रेल उपयोग कर रहे हैं, वहाँ एक आसान तरीका है अगर आप परिशुद्धता की आवश्यकता नहीं है:
time_ago_in_words 270921.seconds.from_now
# => 3 days
यह इंगित करने के लिए धन्यवाद कि रेलों में यह है – nXqd
एक को तोड़ने की जरूरत। इस golfed:
s = 270921
dhms = [60,60,24].reduce([s]) { |m,o| m.unshift(m.shift.divmod(o)).flatten }
# => [3, 3, 15, 21]
आप सरलतम विधि मैं इस समस्या के लिए पाया का उपयोग कर सकते हैं:
def formatted_duration total_seconds
hours = total_seconds/(60 * 60)
minutes = (total_seconds/60) % 60
seconds = total_seconds % 60
"#{ hours } h #{ minutes } m #{ seconds } s"
end
तुम हमेशा अपनी आवश्यकताओं के दिए गए मान समायोजित कर सकते हैं।
2.2.2 :062 > formatted_duration 3661
=> "1 h 1 m 1 s"
- 1. घंटे, मिनट, सेकंड
- 2. घंटे, मिनट और सेकंड कैसे प्राप्त करें
- 3. सेकंड में कुछ घंटे, घंटे, मिनट और सेकंड में विभाजित करें?
- 4. रूबी में दिन/घंटे/मिनट/सेकेंड का विश्लेषण कैसे करें?
- 5. मिलीसेकंड को घंटों और दिनों में कैसे परिवर्तित करें?
- 6. नियमित अभिव्यक्तियों में मिलान घंटे/मिनट/सेकंड - एक बेहतर तरीका?
- 7. मिलीसेकंड से जावास्क्रिप्ट उलटी गिनती स्क्रिप्ट घंटे-मिनट-सेकंड
- 8. दिन, घंटे, मिनट, दो तिथियों के बीच सेकंड
- 9. घंटे की गणना कैसे करें: कुल मिनट से मिनट?
- 10. सेकेंड, मिनट, सेकंड
- 11. अजगर समारोह मिनट, घंटे, और दिन
- 12. पीएचपी तिथि() घंटे, मिनट और अग्रणी शून्य
- 13. कैसे मिनट में सेकंड कन्वर्ट करने के लिए: सेकंड प्रारूप
- 14. सेकंड, मिनट और सेकेंड में सेकंड्स को कनवर्ट करें
- 15. PHP: घंटे में वर्तमान समय कैसे प्राप्त करें: मिनट: दूसरा?
- 16. स्वरूपण सेकंड और मिनट
- 17. अंतर, मिनट, सेकंड
- 18. जावास्क्रिप्ट शो मिलीसेकंड दिन के रूप में: घंटे: सेकंड के बिना मिनट
- 19. माइक्रोटॉम सेकेंड या घंटे या मिनट रूपांतरण
- 20. कार्य बाहर मिनट और घंटे
- 21. Google चार्ट लाइन चार्ट घंटे और मिनट
- 22. Php: DATETIME: केवल कुछ सेकंड (नहीं घंटे न मिनट) स्थापित करने के लिए कैसे
- 23. आप 00:00:00 से घंटे, मिनट, सेकेंड में PHP कैसे परिवर्तित करते हैं?
- 24. पर्ल में मैं दिनांक/समय को युग समय (यूनिक्स समय/सेकंड से 1 9 70) में कैसे परिवर्तित करूं?
- 25. मैं डेटेड एसक्यूएल में घंटे, मिनट, सेकेंड कैसे जोड़ूं?
- 26. डब्ल्यूसीएफ net.tcp कनेक्शन 9 घंटे के बाद मर जाता है, 1 मिनट
- 27. आर: वाई अक्ष में मिनट और सेकंड के साथ बॉक्सप्लॉट
- 28. घंटों में कनवर्ट करें: मिनट: एक्सेल में कुल मिनटों में सेकंड
- 29. एनएसडीएटी पर समय कैसे सेट करें? मिनट:
- 30. हर 9 सेकंड में जावास्क्रिप्ट पाश?
@ माइक वुडहाउस: यही वह है जिसे मैं ढूंढ रहा था। धन्यवाद। – Radek
महान उत्तर - धन्यवाद। –
+1, अगर मुझे 90 मिनट तक सेकंड दिखाने की ज़रूरत है तो उदाहरण के लिए मैं एक गेम को ट्रैक कर रहा हूं। यह 90:54 की तरह कुछ दिखाना चाहिए। धन्यवाद! – uday