В Python3, я могу цикл по диапазону дат, как этотЦикл по диапазону дат
import datetime
dt0 = datetime.datetime(2017, 1, 1, 0, 0, 0)
dt1 = datetime.datetime(2017, 1, 5, 0, 0, 0)
dt = dt0
while dt <= dt1:
print(dt.strftime("%Y-%m-%d %H:%M:%S"))
dt += datetime.timedelta(days=1)
Есть ли подобный способ перебрать дат в Rust? Я знаю, что я мог писать вложенную петлю в течение месяцев, затем в дни месяца. Например:
let days = [1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
let months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
let months_30_days = [4, 6, 9, 11];
for month in months.iter() {
for day in days.iter() {
if month == &2 {
if is_leap_year(year) {
if day > &29 {
continue;
}
} else if day > &28 {
continue;
}
} else if months_30_days.contains(&month) && day > &30 {
continue;
}
print!("{:04}-{:02}-{:02} ", year, month, day);
}
}
fn is_leap_year(year: i32) -> bool {
if year % 100 == 0 {
return year % 400 == 0;
} else {
return year % 4 == 0;
}
}
Есть ли более деревенский способ сделать это?
Если у вас есть код, который ** ** рабочая, но вы хотите его улучшить, что это лучший вопрос [Code] (Review.SE http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users). – Shepmaster
Вы, кажется, пропустили цикл внешнего года. – ljedrz
Это фрагмент. Год был объявлен ранее в основной функции. Но вы правы, цикл года может быть добавлен в качестве внешнего цикла, если диапазон дат включал несколько лет. –