tôi cần phải tạo ra chuỗi với tất cả các ngày trong một nămLàm thế nào để tạo ra phạm vi ngày cho dữ liệu ngẫu nhiên trên bash
ví dụ:
MIN_DATE=01.01.2012
MAX_DATE=31.12.2012
for date in {1...366..1}
do
echo ...
done
tôi cần phải tạo ra chuỗi với tất cả các ngày trong một nămLàm thế nào để tạo ra phạm vi ngày cho dữ liệu ngẫu nhiên trên bash
ví dụ:
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
Không phải là một giải pháp bash tinh khiết, nhưng dateutils tôi có thể trợ giúp:
dseq 01.01.2012 31.12.2012 -f %d.%m.%Y -i %d.%m.%Y
=>
01.01.2012
02.01.2012
...
31.12.2012
Định dạng đầu ra có thể được định cấu hình với -f
và định dạng đầu vào wit h -i
.
Sử dụng định dạng ngày ISO 8601 (năm-tháng-ngày), bạn có thể so sánh ngày theo từ điển. Đó là một chút lộn xộn hơn tôi muốn, vì bash
không có nhà điều hành "< =" cho chuỗi.
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
cách thực hiện việc này tự động với năm bị rò rỉ? –
@DmitryDubovitsky Ý của bạn là gì? '29.02.2012' hiện diện trong đầu ra. –
Muốn ra nó tự động, ví dụ Trong năm 2011 năm kỷ lục cuối cùng sẽ là 2012-01-01 cái gì đó: 'days_in_year = ngày "2012/12/31" + "% j"; để đăng nhập ... ' –