2012-08-24 32 views

Trả lời

11
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done 
+0

cách thực hiện việc này tự động với năm bị rò rỉ? –

+0

@DmitryDubovitsky Ý của bạn là gì? '29.02.2012' hiện diện trong đầu ra. –

+0

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 ... ' –

2

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.

0

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ác vấn đề liên quan