প্রসেসিংয়ের তারিখের ভিত্তিতে আমি কীভাবে আগের মাসের শেষের তারিখ পেতে পারি?
উদাহরণ:
- প্রক্রিয়া করার তারিখ = 15jan2015
- প্রত্যাশিত তারিখ = 31 ডিসেম্বর ২০১৪,
- প্রক্রিয়া করার তারিখ = 10feb2015
- প্রত্যাশিত তারিখ = 31jan2015
প্রসেসিংয়ের তারিখের ভিত্তিতে আমি কীভাবে আগের মাসের শেষের তারিখ পেতে পারি?
উদাহরণ:
উত্তর:
জিএনইউ সহ date
:
$ date +%d%b%Y
16Aug2015
$ date -d "$(date +%Y-%m-01) -1 day" +%d%b%Y
31Jul2015
কিছু শেলগুলি তারিখের কারসাজির জন্য অন্তর্নির্মিত সমর্থন করে:
সহ ksh93
:
$ printf "%(%d%b%Y)T\n" "1st day, yesterday"
31Jul2015
সহ zsh
:
$ zmodload zsh/datetime
$ strftime -s d %Y-%m-01-12 $EPOCHSECONDS
$ strftime -rs d %Y-%m-%d-%H $d
$ strftime %d%b%Y $((d-86400))
31Jul2015
এটি করার অনেকগুলি উপায় রয়েছে ; আমি খুঁজে পাওয়া সবচেয়ে সহজ এখানে (জিএনইউ ধরে নিচ্ছি date
):
$ date -d "-$(date +%d) days"
Fri Jul 31 16:07:23 EDT 2015
TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '1 day ago'
। আপনি একটি ত্রুটি পান কারণ সেখানে কোনও 2011-12-30 ছিল না। অর্থাৎ দিবস অফসেটটি ক্যালেন্ডারের সময় করা হয়েছিল। 2011-12-31 বিয়োগ 31 দিন আপনাকে 2011-11-30 দেয় কারণ এটি 31 থেকে 31 নেয়। এটি বর্তমান সময়ের চেয়ে 31 * 24 * 60 * 60 * 60 সেকেন্ড সময় নেয় না। TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '24 hour ago'
যেটির সাথে আপনি 29 তম প্রদান করেন তার তুলনা করুন , এই বার, তারিখটি 24 * 60 * 60 * 60 সেকেন্ড আগে ছিল।
এখানে ম্যাক ওএসে কাজ করা একটি সংস্করণ রয়েছে, যা বিএসডি date
ইউটিলিটি ব্যবহার করে :
date -v1d -v-1d +%d%b%Y
যুক্তিগুলি যথাযথভাবে প্রয়োগ করা হয়। আপনি ধরণের কল্পনা করতে পারেন যে একটি যুক্তি থেকে পরের দিকে একটি তারিখ পাইপ করা হয়। উদাহরণ স্বরূপ:
date
) -> 2017-03-06 দিয়ে শুরু করুন-v1d
) -> 2017-03-01-v-1d)
-> 2017-02-28)+%d%b%Y
) -> 28Feb2017 তারিখটি ফর্ম্যাট করুনআপনি যে মাসগুলি চান তার পিছনে বা ফরোয়ার্ড ( ) এর date -v-1m -v1d -v-1d
পরিবর্তে ব্যবহার করে আপনি যে কোনও মাসের সামনের বা পিছিয়ে যেতে পারেন।-1m
+1m
এটাই জেনেরিক উত্তর। এই প্রশ্নটি একটি নির্দিষ্ট তারিখের সাথে সম্পর্কিত তারিখগুলি সম্পর্কে বিশেষভাবে জিজ্ঞাসা করে। ম্যাক ওএস / বিএসডি তারিখের ইউটিলিটি আপনাকে শুরু করার জন্য একটি ডেটস্ট্যাম্প সরবরাহ করতে দেয় না, তবে আপনি প্রতিটি তারিখের উপাদানটি পৃথকভাবে সেট করতে পারেন:
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y
-> 31 ডিসেম্বর ২০১৪
এই কোডটি ব্যবহার করার চেষ্টা করুন
date -d "-$(date +%d) days month" +%Y-%m-%d