/ / बैश - bash, date, ksh, aix का उपयोग कर AIX में दो तिथियों के बीच के दिनों की गणना करें

बैश - bash, date, ksh, aix का उपयोग कर AIX में दो तिथियों के बीच के दिनों की गणना करें

मैं बी / डब्ल्यू दो दिनों की तारीखों को जानने की कोशिश कर रहा हूं। नीचे मेरे पास कोड है जो यूनिक्स पर पूरी तरह से काम कर रहा है।

date1=$(date "+%m/%d/%y")
temp1=4/8/24
echo $((($(date -u -d $temp1 +%s) - $(date -u -d $date1 +%s)) / 86400))

जब मैं AIX बॉक्स पर उपरोक्त स्क्रिप्ट निष्पादित कर रहा हूं, तो मुझे नीचे त्रुटि मिल रही है:

तिथि: एक मान्यता प्राप्त ध्वज नहीं: डी

उपयोग: दिनांक [-u] [+ "फील्ड वर्णनकर्ता"]

तिथि: एक मान्यता प्राप्त ध्वज नहीं: डी

उपयोग: दिनांक [-u] [+ "फील्ड वर्णनकर्ता"]

(-) / 86400: वाक्यविन्यास त्रुटि: अपेक्षित ऑपरेंड (त्रुटि टोकन ") / 86400") `

यह एक प्रोड एनवी है और मेरे पास इस पर किसी भी पैक को स्थापित करने के लिए व्यवस्थापक पहुंच नहीं है।

उत्तर:

उत्तर № 1 के लिए 1

यह मानता है कि एक महीने एक वर्ष का 1/12 है, और आप उचित 4 अंकों का उपयोग करते हैं वर्षों:

#!/usr/bin/awk -f
function mktm(datespec) {
split(datespec, q, "/")
return 
(q[3] - 1970) * 60 * 60 * 24 * 365.25 + 
(q[1] -    1) * 60 * 60 * 24 * 365.25 / 12 + 
(q[2] -    1) * 60 * 60 * 24
}
function ceil(x) {
y = int(x); return y < x ? y + 1 : y
}
BEGIN {
srand()
print ceil((mktm(ARGV[1]) - srand()) / (60 * 60 * 24))
}