date -d "$death_date - $y years - $m months - $d days"
জন্মের তারিখ (বংশবৃত্তির জন্য) পেতে ব্যবহার করার সময় এটি প্রকাশিত হয়েছিল । সেই আদেশটি ভুল। মাস সমস্ত একই দৈর্ঘ্য হয় না, তাই (date + offset) - offset != date
। যুগে যুগে বছর / মাস / দিনে, জন্মের তারিখ থেকে এগিয়ে যাওয়া পদক্ষেপগুলি।
$ date --utc -d 'mar 28 1867 +72years +11months +2days'
Fri Mar 1 00:00:00 UTC 1940
$ date --utc -d 'mar 1 1940 -72years -11months -2days'
Sat Mar 30 00:00:00 UTC 1867
# (2 days later than our starting point)
তারিখ উভয় ক্ষেত্রেই সঠিক ফলাফল দেয় তবে দ্বিতীয় ক্ষেত্রে আপনি ভুল প্রশ্ন জিজ্ঞাসা করেছিলেন। এটি দিনগুলির যোগ / বিয়োগের আগে বছরের ১১/১১ মাসের 11 মাসের কভারটি গুরুত্বপূর্ণ। উদাহরণ স্বরূপ:
$ date --utc -d 'mar 31 1939 -1month'
Fri Mar 3 00:00:00 UTC 1939
$ date --utc -d 'mar 31 1940 -1month' # leap year
Sat Mar 2 00:00:00 UTC 1940
$ date --utc -d 'jan 31 1940 +1month' # leap year
Sat Mar 2 00:00:00 UTC 1940
বিয়োগের বিপরীত ক্রিয়াকলাপ হিসাবে বিয়োগের জন্য, ক্রমের ক্রমটি বিপরীত করতে হবে। যোগ করা বছর, THEN মাস, ত্রিশ দিন যোগ করে। বিয়োগ করে যদি বিয়োগটি ব্যবহার করা হয় তবে আপনি আবার আপনার শুরুতে ফিরে যাবেন। এটি হয় না, তাই আপনি করবেন না, যদি দিনগুলি অফসেটটি একটি ভিন্ন দৈর্ঘ্যের মাসে এক মাসের সীমানা অতিক্রম করে।
আপনার যদি শেষের তারিখ এবং বয়স থেকে পিছনের দিকে কাজ করার দরকার হয় তবে আপনি একাধিক অনুরোধের মাধ্যমে এটি করতে পারেন date
। প্রথমে দিনগুলি, পরে মাসগুলি, তারপর বছরগুলিকে বিয়োগ করুন। ( date
ফ্রি ফেব্রুয়ারির দৈর্ঘ্য পরিবর্তনের জন্য লিপ বছরগুলি থাকার কারণে আমি একক অনুরোধে বছর এবং মাস একত্রিত করা নিরাপদ বলে মনে করি না ।)