উত্তর:
রিং0 আমাকে কয়েক সেকেন্ডের ব্যবধানে হারিয়ে ফেলল, তবে পুরো আদেশটি হ'ল:
echo $(($(date --utc --date "$1" +%s)/86400))
এটি ইউটিসি সময় অনুসারে যায়। ফলাফল:
root@hostname:~# echo $((`date --utc --date "$1" +%s`/86400))
14984
ওল্ফ্রামআল্ফার সাথে একটি দ্রুত চেক দেখায় যে এটি সঠিক মান।
আমারও এটির সমাধান করার দরকার ছিল, তবে দিনের সময় নির্বিশেষে আমি # দিনের জন্য একই মান পেতে চাই। এখানে দেখানো মত পদ্ধতির সাথে মানটি মধ্যরাতের ইউটিসি-তে স্থানীয় সময়ের পরিবর্তে পরিবর্তিত হবে। এটি সম্ভবত ইউরোপীয় ইউনিয়ন বা ইউএস পূর্ব উপকূলের কোনও ইস্যুর মতোই কম মনে হচ্ছে, যা ইউটিসি-র কাছে এতটাই কাছাকাছি যে সাধারণ কাজের দিনের মাঝামাঝি দিনের মান পরিবর্তন হবে না, তবে ক্যালিফোর্নিয়ায়, দিনের পরিবর্তন বিকেল চারটায় পিএসটি হবে, যা অসুবিধাগ্রস্থ হতে পারে। আমি ভেবেছিলাম যে অস্ট্রেলিয়ানরা খুব সকালে রাতের বেলা মূল্য পরিবর্তনের জন্য বিরক্ত হবে।
আমরা যদি এটির জন্য সংশোধন করতে চাই তবে সেকেন্ড / দিনকে ভাগ করে নেওয়ার আগে আমাদের ইউটিসি থেকে অফসেট যুক্ত করতে হবে। ভাগ্যক্রমে, লিনাক্স তারিখ কমান্ডটিতে একটি % z ফর্ম্যাট ক্রম রয়েছে যা ইউটিসি থেকে অফসেটের প্রতিবেদন করে। মানক ফর্ম্যাট থাকাকালীন (এই ফলাফলটি ডেনভার সময়, এমডিটির জন্য):
$ date +%z
-0600
। । । কোনও গণনায় সরাসরি ব্যবহারযোগ্য নয়, ডান সংশোধকগুলি আমরা যা চাই তা প্রদান করবে:
$ date +%-:::z
-6
এটিকে সাধারণ সেকেন্ড / ঘন্টা / দিনের রূপান্তরগুলির সাথে একত্রে রাখুন এবং আমি বিশ্বাস করি যে নিম্নলিখিত 1/1/1970 থেকে দিনগুলি আউটপুট করা উচিত, 1/1/1970 নিজেই দিন শূন্য এবং স্থানীয় সময় মধ্যরাতে মূল্য বৃদ্ধি করে:
echo $(( ( $(date +"%s + ( %-:::z * 3600)") ) / 86400 ))
এই সাধারণ গণনাটি এমন সময় অঞ্চলগুলির জন্য কাজ করবে না যা পুরো সময় ধরে ইউটিসি থেকে অফসেট হয় না (যেমন, ভারত, টিজেড = এশিয়া / কলকাতা), যেহেতু উত্পাদিত "+5: 30" date +%-:::z
"অভিব্যক্তিতে অবৈধ চরিত্র " তৈরি করবে যখন উপরের বিবৃতিতে ব্যবহৃত হয়।
$()
ব্যাকটিক্সের চেয়ে বেশি পছন্দ করা হয় ।echo $(( $(date ...) / 86400 ))