আমি কীভাবে সময় থেকে মোট মিনিট নিতে পারি?


8

আমার কমান্ডটি ইনপুট করার সময় আমার সিস্টেমটি 10:42 এর মতো সময় প্রদর্শিত হয়েছিল date +%R। আমার বেশিরভাগ সময় নেওয়া দরকার। এর অর্থ এই 2৪২ মিনিটের মতো। মিনিটে মোট সময় প্রদর্শনের জন্য কি কোনও আদেশ বা শেল স্ক্রিপ্ট রয়েছে?

উত্তর:


11

দিনের মোট মিনিট পেতে, আমি নিম্নলিখিত কমান্ডটি ব্যবহার করব:

$ date "+%H*60+%M" | bc

উদাহরণ:

$ date +%R
09:30
$ date "+%H*60+%M" | bc
570

কৌশলটি হ'ল dateআউটপুটটিকে bcফর্মুলার ব্যাখ্যা ও গণনা করার জন্য বিন্যাস করা ।


2
আপনি যদি ব্যবহার করেন তবে echo $(date +"%H*60+%M") | bcএটি zsh;) এও কাজ করে
বি

@ এএব একদিন আমি স্যুইচ করবzsh
সিলভাইন পাইনাউ

1
date "+%H*60+%M" | bcঠিক পাশাপাশি কাজ করে। সম্ভবত কোনও শেল সম্পর্কে।
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা: সহজ, ধন্যবাদ আমি আমার উত্তর অনুসারে আপডেট করেছি।
সিলভাইন পাইনাউ

5

শুধু বাশ:

IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))

উভয় ভেরিয়েবল অত্যাচার শেল অবৈধ অকট্যাল সংখ্যার জন্য ত্রুটি নিক্ষেপ এড়াতে 10-ভিত্তিক, যেমন চিকিত্সা করা 08এবং09


হ্যাঁ, echo $(( $(date "+%k * 60 + 10#%M") ))আমি যা বলতে
ডিজিটাল ট্রমা

1
হ্যাঁ এতে কিছু ভুল নেই। হতে পারে আমার উত্তরটি আরও কিছুটা ... নির্দেশমূলক
গ্লেন জ্যাকম্যান

3
date +%R | awk -F ":" '{print ($1 * 60) + $2}'

অথবা

 echo $((($(date +%l) * 60 ) + $(date +%M)))

date +%l সময় পাবে, 60 এর সাথে গুণ এবং কয়েক মিনিট যুক্ত হবে date +%M


2

ব্যবহার dateএবং bash:

eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"

উদাহরণ

$ date
Fr 10. Jul 08:45:05 CEST 2015

$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525

ব্যবহার dateএবং একটি z- শেল (zsh):

IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"

উদাহরণ

% date
Fr 10. Jul 08:40:53 CEST 2015

% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520

1
@ দিনেশধনঞ্জয়েন আপনি কি আমার উত্তর নিয়ে সন্তুষ্ট? তারপরে আমাকে একটি আপভোট (∧) দিন। আমি যদি আপনার সমস্যার সমাধান করতে পারি তবে আপনি আমার উত্তরটি (✓) চিহ্নিত করে দিলে ভাল লাগবে। Askubuntu.com/help/someone-answers ;)
এবি

1
আমি মনে করি না যে আপনার জ্যাশ উত্তরটি সঠিক: IFS=: set -- $(date +%T); echo $1প্রত্যাবর্তন 08:16:52- আপনার প্রয়োজন হবেIFS=:; set ...
গ্লেন জ্যাকম্যান

@glennjackman আপস এবং আপনাকে ধন্যবাদ, সংশোধন করেছেন। : \
এবি

1

আপনার আইএফএস ব্যবহার করার দরকার নেই, আপনি এটি এইভাবে করতে পারেন:

date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo  "Total minutes: $(($H * 60 + $M))"

আউটপুট হল:

Total minutes: 593

আমি আপনার উত্তর সংশোধন করেছি। ত্রুটির বার্তাটি ছিলbash: 9 17*60+: syntax error in expression (error token is "17*60+")
এবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.