I need to generate strings with all days in a year
ex:
MIN_DATE=01.01.2012
MAX_DATE=31.12.2012
for date in {1...366..1}
do
echo ...
done
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done
Not a pure bash solution, but my dateutils can help:
dseq 01.01.2012 31.12.2012 -f %d.%m.%Y -i %d.%m.%Y
=>
01.01.2012
02.01.2012
...
31.12.2012
Output format can be configured with -f
and input format with -i
.
Using an ISO 8601 date format (year-month-day), you can compare dates lexicographically. It's a little messier than I'd like, since bash
doesn't have a "<=" operator for strings.
year=2011
d="$year-01-01"
last="$(($year+1))-01-01"
while [[ $d < $last ]]; do
echo $d
d=$(date +%F --date "$d + 1 day")
done
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With