Pobierz datę (dzień przed bieżącym czasem) w Bash
Jak mogę wydrukować datę, która jest dzień przed bieżącym czasem w Bash?
15 answers
Jeśli masz datę GNU i dobrze Cię zrozumiałem
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
Lub
$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:17:09
Jeśli masz BSD (OSX) date
możesz to zrobić tak:
date -j -v-1d
Wed Dec 14 15:34:14 CET 2011
Lub jeśli chcesz wykonać obliczenia daty na dowolną datę:
date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-15 14:34:36
date --date='-1 day'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:17:18
Cóż, to jest późna odpowiedź, ale to chyba działa!!
YESTERDAY=`TZ=GMT+24 date +%d-%m-%Y`;
echo $YESTERDAY;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 09:02:34
date +%Y:%m:%d -d "yesterday"
Szczegółowe informacje na temat formatu daty można znaleźć na stronie podręcznika dla date
date --date='-1 day'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:19:58
MAC OSX
Dla wczorajszej daty:
date -v-1d +%F
Gdzie 1D definiuje dzień bieżący minus 1 dzień. Podobnie,
Date-v-1W + % F - for previous week date
Date-v-1m + % f - for previous month date
JEŚLI MASZ DATĘ GNU,
date --date="1 day ago"
Więcej informacji: https://www.cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-18 19:10:02
Używać Perla zamiast być może?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
Or, use nawk and (ab) use / usr / bin/adb:
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
Natknąłem sięto też ... szaleństwo!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 22:24:21
Przepraszam, że nie wspominam o i w systemie Solaris. W związku z tym przełącznik-date nie jest dostępny w Solaris bash.
Dowiaduję się, że mogę dostać poprzedni termin z little trick w strefie czasowej.
DATE=`TZ=MYT+16 date +%Y-%m-%d_%r`
echo $DATE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-11 02:16:44
yesterday=`date -d "-1 day" %F`
Umieszcza datę wczorajszą w formacie RRRR-MM-DD w zmiennej $yesterday
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:19:07
#!/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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:27:09
date --date='-1 day'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-18 00:55:52
Wypróbuj poniższy kod, który zajmuje się również częścią DST.
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'`
Courtsey Ansgar Wiechers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:47
DST aware solution:
Manipulowanie strefą czasową jest możliwe do zmiany zegara kilka godzin. Ze względu na czas letni, 24 godziny temu może być dzisiaj lub przedwczoraj.
Jesteś pewien, że wczoraj było 20-30 godzin temu. Który? Najnowszy, który nie jest dzisiaj.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
Parametr-e użyty w poleceniu echo jest potrzebny w bash, ale nie będzie działał z ksh. W ksh możesz użyć tego samego polecenia bez flagi-E.
Gdy twój skrypt będzie używany w różnych środowiskach, możesz uruchomić skrypt z #!/ bin / ksh lub #!/ bin / bash. Można też zastąpić \n znakiem nowej linii:
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 12:50:58
Niezbyt seksowne, ale może się udać:
perl -e 'my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 86400);$year += 1900; $mon+= 1; printf ("YESTERDAY: %04d%02d%02d \n", $year, $mon, $mday)'
Sformowana z odpowiedzi "martin clayton".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 15:12:39
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-10 10:50:05