में स्वरूपित समय के लिए सेकेंड में समय अवधि को कनवर्ट करें मेरे पास $ i का एक चर है जो शेल स्क्रिप्ट में सेकेंड है, और मैं इसे 24 घंटे एचएच: एमएम: एसएस में बदलने की कोशिश कर रहा हूं। क्या यह खोल में संभव है?शैल
शैल
उत्तर
यहाँ आप = के लिए वास्तव में क्या देख रहे हैं करने के लिए) एक मजेदार hacky तरीका है
date -u -d @${i} +"%T"
स्पष्टीकरण:
date
उपयोगिता, स्ट्रिंग से, में आप एक समय निर्दिष्ट कर सकते हैं 1 9 70-01-01 00:00:00 यूटीसी के बाद से सेकंड, और इसे निर्दिष्ट प्रारूप में आउटपुट करें।-u
विकल्प UTC समय प्रदर्शित करने के लिए है, इसलिए यह नहीं- निम्नलिखित भागों जीएनयू
date
विशिष्ट (लिनक्स) कर रहे हैं (प्रारंभ समय 1970 से यूटीसी में है के बाद से) समय क्षेत्र ऑफसेट में कारक करता है:-d
हिस्साdate
बताता है स्ट्रिंग से समय की जानकारी को स्वीकार करने के बजायnow
- का उपयोग कर
@${i}
हिस्सा है आप कैसे बताdate
कि$i
सेकंड में है
+"%T"
आपके आउटपुट को स्वरूपित करने के लिए है।man date
पृष्ठ से:%T time; same as %H:%M:%S
। चूंकि हम केवलHH:MM:SS
भाग की परवाह करते हैं, यह फिट बैठता है!
$i
युग के बाद से दूसरे में कुछ दिनांक को दर्शाता है, तो आप
date -u -d @$i +%H:%M:%S
साथ इसे प्रदर्शित कर सकता है, लेकिन आप लगता है कि $i
एक अंतराल (जैसे कुछ अवधि) नहीं एक तारीख है लगता है, और फिर मैं डॉन समझ में नहीं आता कि आप क्या चाहते हैं।
+% टी के साथ @ सैम्पसन-चेन के समान (डुप्लिकेट)। –
एक और दृष्टिकोण: अंकगणित
i=6789
((sec=i%60, i/=60, min=i%60, hrs=i/60))
timestamp=$(printf "%d:%02d:%02d" $hrs $min $sec)
echo $timestamp
1:53:09
ओपी के बाद क्या नहीं हो सकता था, लेकिन मुझे वही था जो मुझे चाहिए था। धन्यवाद। –
-d
तर्क coreutils
(लिनक्स) केवल से तारीख करने के लिए लागू होता है पैदा करता है।
बीएसडी/ओएस एक्स में, का उपयोग
date -u -r $i +%T
AIX पर काम नहीं करते :( – zack
यहाँ मेरी साइट पर मेरी algo/लिपि सहायकों है: http://ram.kossboss.com/seconds-to-split-time-convert/ मैं इस्तेमाल किया इस elogant यहां से algo: Convert seconds to hours, minutes, seconds
convertsecs() {
((h=${1}/3600))
((m=(${1}%3600)/60))
((s=${1}%60))
printf "%02d:%02d:%02d\n" $h $m $s
}
TIME1="36"
TIME2="1036"
TIME3="91925"
echo $(convertsecs $TIME1)
echo $(convertsecs $TIME2)
echo $(convertsecs $TIME3)
का उदाहरण मेरा दूसरा दिन, घंटा, मिनट, दूसरा कनवर्टर:
# convert seconds to day-hour:min:sec
convertsecs2dhms() {
((d=${1}/(60*60*24)))
((h=(${1}%(60*60*24))/(60*60)))
((m=(${1}%(60*60))/60))
((s=${1}%60))
printf "%02d-%02d:%02d:%02d\n" $d $h $m $s
# PRETTY OUTPUT: uncomment below printf and comment out above printf if you want prettier output
# printf "%02dd %02dh %02dm %02ds\n" $d $h $m $s
}
# setting test variables: testing some constant variables & evaluated variables
TIME1="36"
TIME2="1036"
TIME3="91925"
# one way to output results
((TIME4=$TIME3*2)) # 183850
((TIME5=$TIME3*$TIME1)) # 3309300
((TIME6=100*86400+3*3600+40*60+31)) # 8653231 s = 100 days + 3 hours + 40 min + 31 sec
# outputting results: another way to show results (via echo & command substitution with backticks)
echo $TIME1 - `convertsecs2dhms $TIME1`
echo $TIME2 - `convertsecs2dhms $TIME2`
echo $TIME3 - `convertsecs2dhms $TIME3`
echo $TIME4 - `convertsecs2dhms $TIME4`
echo $TIME5 - `convertsecs2dhms $TIME5`
echo $TIME6 - `convertsecs2dhms $TIME6`
# OUTPUT WOULD BE LIKE THIS (If none pretty printf used):
# 36 - 00-00:00:36
# 1036 - 00-00:17:16
# 91925 - 01-01:32:05
# 183850 - 02-03:04:10
# 3309300 - 38-07:15:00
# 8653231 - 100-03:40:31
# OUTPUT WOULD BE LIKE THIS (If pretty printf used):
# 36 - 00d 00h 00m 36s
# 1036 - 00d 00h 17m 16s
# 91925 - 01d 01h 32m 05s
# 183850 - 02d 03h 04m 10s
# 3309300 - 38d 07h 15m 00s
# 1000000000 - 11574d 01h 46m 40s
मैं सी खोल उपयोग करते हैं, इस तरह:
#! /bin/csh -f
set begDate_r = `date +%s`
set endDate_r = `date +%s`
set secs = `echo "$endDate_r - $begDate_r" | bc`
set h = `echo $secs/3600 | bc`
set m = `echo "$secs/60 - 60*$h" | bc`
set s = `echo $secs%60 | bc`
echo "Formatted Time: $h HOUR(s) - $m MIN(s) - $s SEC(s)"
को जारी रखते हुए @ Daren`s जवाब, बस स्पष्ट होना: आप अपना समय क्षेत्र करने के लिए रूपांतरण का उपयोग करना चाहते हैं, तो का उपयोग नहीं करते "यू" स्विच करें, जैसे: date -d @$i +%T
या कुछ मामलों में date -d @"$i" +%T
।
- 1. शैल
- 2. शैल
- 3. शैल
- 4. शैल
- 5. शैल स्क्रिप्ट
- 6. शैल स्क्रिप्ट
- 7. शैल स्क्रिप्ट
- 8. शैल पैरामीटर
- 9. शैल स्क्रिप्ट
- 10. शैल स्क्रिप्ट
- 11. शैल स्क्रिप्ट
- 12. शैल स्क्रिप्ट
- 13. powershell: शैल
- 14. बैश शैल
- 15. शैल स्क्रिप्ट
- 16. शैल एक्सटेंशन?
- 17. शैल स्क्रिप्ट
- 18. जेएसएच शैल
- 19. शैल स्क्रिप्टिंग
- 20. बैश/शैल
- 21. शैल स्क्रिप्ट
- 22. शैल स्क्रिप्ट
- 23. शैल स्क्रिप्ट
- 24. शैल स्क्रिप्टिंग
- 25. निष्क्रिय शैल
- 26. एसडब्ल्यूटी शैल
- 27. फिश शैल
- 28. शैल स्क्रिप्ट
- 29. शैल स्क्रिप्टिंग
- 30. शैल स्क्रिप्ट
त्वरित और प्रभावशाली! –
मैक/यूनिक्स में यह कैसे काम करता है इसके लिए नीचे एलन टैम के उत्तर को देखें: http://stackoverflow.com/a/21822510/243709 –
मुझे लगता है कि यह केवल 86400 से कम 'i' के लिए काम करता है:' i = 86400; date -u -d @ $ {i} + "% T" 'आपको 00: 00: 00' – galaux