আজ অবধি আপনি কীভাবে ইনপুটটির জন্য একটি বিন্যাস নির্দিষ্ট করবেন?


19

এমন একটি ফর্ম্যাটে একটি তারিখ এবং সময় দেওয়া হয়েছে যা স্বীকৃত নয় date, আমি কীভাবে dateতারিখ এবং সময়কে সনাক্ত করতে পারি ?

উদাহরণ স্বরূপ:

$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep  9 23:58:46 MDT 2012

না --magic-optionরয়েছে? যদি তা না হয় তবে ইনপুটটিকে sedএকটি সুগঠিত তারিখের স্ট্রিংয়ে রূপান্তরিত করার পরিবর্তে এর সমাধান করার আরও কি আরও সুন্দর উপায় আছে ?


উত্তর:


10

পসিক্স বা জিএনইউ তারিখের কোনওটিই নেই --magic-option। ফ্রিবিএসডি এটিকে কল করে -f( dateআপনার প্রস্তাবনার মতো নয়, এর আউটপুট ফর্ম্যাট স্পেসিফায়ারের অনুরূপ একটি সিনট্যাক্স সহ )।

আপনার তারিখটি জিএনইউ তারিখের দ্বারা স্বীকৃত হওয়ার খুব কাছাকাছি: এটি গ্রহণের পরিবর্তে কোলনকে স্থানের পরিবর্তে তারিখটি পৃথক করে।

date -d "$(echo "09SEP2012:23:58:46" | sed 's/:/ /')"

1
এবং কাস্টম ফর্ম্যাট সঙ্গে? যাওয়ার কেবল নিয়মিত অভিব্যক্তিই কি? এটি ভয়াবহ :-(
phil294

1
শাস্ত্রীয় উদাহরণটি যে ফর্ম্যাটটিতে রয়েছে সে সম্পর্কে কিছু না জেনে আপনি তারিখগুলি পার্স করতে পারবেন না 01/02/03
গিলস 'দু: খিত হওয়া বন্ধ করুন'

5

আমি অনেকগুলি সরঞ্জাম ( ডেটুটিলস ) লিখেছি যা আরও স্ক্রিপ্ট-বান্ধব উপায়ে তারিখ এবং সময় নিয়ে কাজ করে। আপনার যাদু বিকল্পটি রয়েছে --input-format|-i, যেমন:

dconv -i '%d%b%Y:%H:%M:%S' "09SEP2012:23:58:46"
=>
  2012-09-09T23:58:46

যদিও dconvসরাসরি dateআউটপুট ফর্ম্যাটটিকে সমর্থন করে না (এটি TZপরিবেশে কোনও কিছু প্রদান করে না বা কিছুই দেয় না ), তারিখের একটি সরঞ্জাম strptimeরয়েছে যা ফর্ম্যাট স্পেসিফায়ারকে সমর্থন করে ।%Z

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.