কিভাবে মাসের সপ্তাহের সংখ্যা নির্ধারণ করবেন


10

লিনাক্স সিএলআই-তে, মাসের সপ্তাহের নম্বর পাওয়ার উপায় আছে? একটি সরল (লাইক date) কমান্ড দিয়ে এটিকে পেতে আরও একটি উপায় থাকতে পারে ? ধরা যাক যে দিনটি 1 থেকে 7 প্রথম সপ্তাহ, 8 থেকে 14 দিনটি দ্বিতীয় সপ্তাহ, এবং আরও অনেক কিছু।


আপনি কিভাবে মাসের সপ্তাহটি সংজ্ঞায়িত করবেন? দিনের সংখ্যাটি 7 দ্বারা বিভক্ত হয়ে গোল হয়ে গেছে? রবিবার / সোমবার / যা পেরিয়ে গেছে তার সংখ্যা?
এমজিগ্রাভেন

এর প্রথম সপ্তাহের এক থেকে 7 দিন, 7 থেকে 14 দ্বিতীয় সপ্তাহ, 14 থেকে 21 তৃতীয়াংশ এবং 21 তম মাসের চতুর্থ সপ্তাহের শেষে বলতে পারি। আমি জানি যে ডেট ন্যাডের সাথে সরল বাশ স্ক্রিপ্টটি যদি এর জন্য ভাল সমাধান হয় তবে আমি ভাবছি যে আমি কোনও স্ক্রিপ্ট না করেই একটি কমান্ড দিয়ে ডিআই করতে পারি।
বি 14 ডি 3

@ বি 14 ডি 3 আপনার "মাসের সপ্তাহ" সংজ্ঞাটি বেশ মোটা দারুণ - আপনি কীসের জন্য বিশেষত এটি ব্যবহার করছেন?
voretaq7

1
কোন কিছুর জন্য আমি তারিখের জন্য মানুষ পড়ছিলাম এবং এটি আমার মনে আসল (কখনও কখনও আমার এত বোকা চিন্তা থাকে)। তাহলে এর চেয়ে ভালো সংজ্ঞা আর কী হবে?
বি 14 ডি 3

উত্তর:


21

dateতাই আপনি কিছু বহিরাগত গাণিতিক প্রয়োজন কমান্ড অভ্যন্তরীণভাবে করতে পারব না।

echo $((($(date +%-d)-1)/7+1))

সম্পাদনা:% এবং d এর মধ্যে একটি বিয়োগ চিহ্ন যুক্ত করা হয়েছে


এই কাজটি ঠিকঠাক, তবে আমি বুঝতে পারি না যে এই পাটিগণিত কেন পূর্ণসংখ্যা দেয়?
বি 14 ডি 3

2
বাশ শুধুমাত্র পূর্ণসংখ্যার পাটিগণিত করে।
মিগ্রোর্ভেন

বাহ এটা জানত না।
থেক্স

4
এটি সঠিক - 29+ দিনগুলি মাসের 5 তম সপ্তাহে।
মিগ্রোর্ভেন

5
দুঃখিত, আমি সুন্দর দেখতে মন্তব্য ফর্ম্যাট করতে জানি না। যাইহোক, বাস্তবায়নের জন্য দুর্দান্ত ধারণা, তবে তারিখটি 08 বা 09 হয় তবে এটি ত্রুটির কারণ হতে পারে: -ব্যাশ: (09: বেসের জন্য মান খুব ভাল (ত্রুটির টোকেনটি "09")) কারণ এটি যদি সংখ্যার মান 0 দিয়ে শুরু হয় , এটি সি ভাষার দ্বারা অষ্টাল সংখ্যা হিসাবে ব্যাখ্যা করা হবে, সুতরাং 08 09 অবৈধ me আমার জন্য, কাজের ক্ষেত্রটি% d থেকে% e তে পরিবর্তিত হবে,% e শীর্ষস্থানীয় 0: ইকো $ ((($ (তারিখ +% + e) -1) / 7 + 1))
Shuu Shắc

2

আপনি এটি ব্যবহার করতে পারেন:

সোমবার প্রথম সপ্তাহের দিন

WEEKNUMBER=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))

রবিবার প্রথম সপ্তাহের ডেটি y

WEEKNUMBER=$(( 1 + $(date +%U) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%U) ))

1

এটা চেষ্টা কর:

d=`date +%d` ; m=`date +%m` ; y=`date +%Y` ; cal $m $y | sed -n "3,$ p" | sed -n "/$d/{=;q;}"

আমার জন্য সহজ দেখাচ্ছে না: ডি এবং আজকের জন্য এটি আমাকে 5
B14D3

1

ভিক্টর সানচেজের সমাধানটি সরলকরণ:

expr 1 + $(date +%V) - $(date +%V -d $(date +%Y-%m-01))

আপনি যদি রবিবার থেকে সপ্তাহ শুরু করতে চান তবে% V এর সাথে% U প্রতিস্থাপন করুন।

বিটিডব্লিউ: $ ((...)) এর পরিবর্তে এক্সপ্রেস ব্যবহার করতে হয়েছিল কারণ পরবর্তীকালে শীর্ষস্থানীয় শূন্যগুলির সাথে সংখ্যাগুলি পছন্দ হবে বলে মনে হয় না।


0

আপনি যদি আপনার সন্ধানে বাহ্যিক সরঞ্জামগুলি গ্রহণ করেন তবে তারিখের চেষ্টা করুন । এটি ঘটনা-মাসের তারিখগুলির মধ্যে ধারণা পেয়েছে, অর্থাৎ 27 এপ্রিল 2012 এপ্রিল 2012-এর চতুর্থ শুক্র, যা আপনার সপ্তাহের সংজ্ঞার সাথে সাদৃশ্যপূর্ণ। এই নম্বরটি ব্যবহার করতে:

dconv 2012-04-27 -f %c
=>
  04

%c(গণনা) এক মাসের মধ্যে উপস্থিতির জন্য ফর্ম্যাট নির্দিষ্টকরণকারী। বা এমনকি শীতল চেষ্টা করতে

dconv today -f '%cth %a in %b %Y'
=>
  1st Wed in Sep 2012
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.