मैं बी / डब्ल्यू दो दिनों की तारीखों को जानने की कोशिश कर रहा हूं। नीचे मेरे पास कोड है जो यूनिक्स पर पूरी तरह से काम कर रहा है।
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))
}