বাশে বর্তমান সময়ের আগের একদিনের তারিখটি আমি কীভাবে মুদ্রণ করতে পারি?
--date
বা -d
বিকল্পটি কেবল জিএনইউ তারিখে উপলভ্য
বাশে বর্তমান সময়ের আগের একদিনের তারিখটি আমি কীভাবে মুদ্রণ করতে পারি?
--date
বা -d
বিকল্পটি কেবল জিএনইউ তারিখে উপলভ্য
উত্তর:
আপনার যদি জিএনইউ তারিখ থাকে এবং আমি আপনাকে সঠিকভাবে বুঝতে পারি
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
অথবা
$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
date -v-1d
ওএসএক্স (বিয়োগ), -v+1d
(আরও)
date_days_past () { days_past=${1:-0}; if ! date -v-${days_past}d +%Y%m%d 2>/dev/null; then date --date="-${days_past} day" +%Y%m%d; fi }
আপনার যদি BSD (OSX) থাকে তবে date
আপনি এটি এটি করতে পারেন:
date -j -v-1d
Wed Dec 14 15:34:14 CET 2011
বা যদি আপনি একটি নির্বিচার তারিখে তারিখ গণনা করতে চান:
date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31
date --date='-1 day'
date: illegal option -- -
date
মাধ্যমে উপলব্ধ GNU সংস্করণ ইনস্টল coreutils
করতে হবে। আপনি যদি হোমব্রু ব্যবহার করছেন তবে আপনি এটির মাধ্যমে এটি ইনস্টল করতে পারেন brew install coreutils
, তারপরে আপনার gdate
কমান্ডের মাধ্যমে জিএনইউ তারিখটি ব্যবহার করতে সক্ষম হওয়া উচিত । দেখুন: topbug.net/blog/2013/04/14/…
ম্যাক ওএসএক্স
গতকালের তারিখের জন্য:
date -v-1d +%F
যেখানে 1 ডি বর্তমান দিন বিয়োগ 1 দিন নির্ধারণ করে। একইভাবে,
তারিখ -v-1w +% F - পূর্ববর্তী সপ্তাহের তারিখের জন্য
তারিখ -v-1m +% F - পূর্ববর্তী মাসের তারিখের জন্য
যদি আপনি GNU তারিখ পেয়ে থাকেন,
date --date="1 day ago"
আরও তথ্য: https://www.cyberciti.biz/tips/linux-unix-get-Yyess- আগামীকাল- তারিখ html
date +%Y:%m:%d -d "yesterday"
তারিখ বিন্যাস সম্পর্কে বিস্তারিত জানার জন্য জন্য man পৃষ্ঠা দেখুন তারিখ
date --date='-1 day'
দুঃখিত আমি সোলারিস সিস্টেমে উল্লেখ না করলাম। যেমন, সোলারিস বাশ-এ-ডেট স্যুইচ পাওয়া যায় না।
আমি টাইমজোনটিতে সামান্য কৌশল নিয়ে আগের তারিখটি পেতে পারি।
DATE=`TZ=MYT+16 date +%Y-%m-%d_%r`
echo $DATE
bash $(TZ=America/New_York date +%Y-%m-%d)
পরিবর্তে পার্ল ব্যবহার করবেন?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
অথবা, নউক এবং (আব) ব্যবহার / ইউএসআর / বিন / অ্যাডবি ব্যবহার করুন:
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
জুড়ে এসেছিল এই খুব ... উন্মাদ!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
date --date='-1 day'
#!/bin/bash
OFFSET=1;
eval `date "+day=%d; month=%m; year=%Y"`
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=`expr $day - $OFFSET`
if [ $day -le 0 ] ;then
month=`expr $month - 1`
if [ $month -eq 0 ] ;then
year=`expr $year - 1`
month=12
fi
set `cal $month $year`
xday=${$#}
day=`expr $xday + $day`
fi
echo $year-$month-$day
1 July , 2013
, ফলাফলটি মুদ্রিত হচ্ছে 2013-6-1347
, যেখানে প্রত্যাশিত ফলাফলটি রয়েছে2013-6-30
echo $(cal $month $year)|tr ' ' '\n'|tail -n 1
" এর মধ্যে 3 লাইনের পরিবর্তে
আপনি যদি নির্বাচিত তারিখের ফর্ম্যাটটি 'ওয়াইওয়াইওয়াইএম' হয় তবে আপনি একটি সাধারণ গণনা করতে পারেন, একটি রেজেক্সের সাথে নিমজ্জনিত:
echo $(($(date +"%Y%m") - 1)) | sed -e 's/99$/12/'
2020 সালের জানুয়ারিতে এটি 201912 ;-) ফেরত আসবে; তবে, এটি কেবলমাত্র কার্যকর, যখন তারিখের গণনা বিকল্প এবং অন্যান্য তারিখের অনুবাদকের বিকল্প নেই (যেমন পার্ল ব্যবহার করে) উপলব্ধ নেই ;-)
date -d "yesterday" '+%Y-%m-%d'
অথবা
date=$(date -d "yesterday" '+%Y-%m-%d')
echo $date
date: illegal option: -d
সোলারিসের ফলস্বরূপ । আপনার উত্তর যা নন-জিএনইউ সোলারিস প্ল্যাটফর্ম সম্পর্কে কোনও প্রশ্নের জন্য পসিক্স-স্ট্যান্ডার্ড date
ইউটিলিটিতে অ-বহনযোগ্য জিএনইউ এক্সটেনশনের উপর নির্ভর করে ।
নীচের কোডটি চেষ্টা করুন, যা ডিএসটি অংশেরও যত্ন করে।
if [ $(date +%w) -eq $(date -u +%w) ]; then
tz=$(( 10#$gmthour - 10#$localhour ))
else
tz=$(( 24 - 10#$gmthour + 10#$localhour ))
fi
echo $tz
myTime=`TZ=GMT+$tz date +'%Y%m%d'`
কোর্টসি আনসার ওয়াইচার্স
ডিএসটি সচেতন সমাধান:
টাইমজোনটি কয়েক ঘন্টা ঘড়ির বদলে পরিবর্তন করা সম্ভব। দিবালোক সংরক্ষণের কারণে, 24 ঘন্টা আগে আজ বা গতকাল আগের দিন হতে পারে।
আপনি নিশ্চিত যে গতকাল 20 বা 30 ঘন্টা আগে। কোনটি? ওয়েল, সবচেয়ে সাম্প্রতিক একটি যা আজ নেই।
echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
ইকো কমান্ডে ব্যবহৃত -e প্যারামিটারটি ব্যাশের সাথে প্রয়োজন তবে ksh দিয়ে কাজ করবে না। Ksh এ আপনি একই কমান্ড -e পতাকা ব্যতীত ব্যবহার করতে পারেন।
যখন আপনার স্ক্রিপ্টটি বিভিন্ন পরিবেশে ব্যবহৃত হবে, আপনি স্ক্রিপ্টটি #! / Bin / ksh বা #! / Bin / bash দিয়ে শুরু করতে পারেন। আপনি নতুন লাইনের মাধ্যমে new n প্রতিস্থাপন করতে পারেন:
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9