Как вы рассчитываете количество недель между двумя датами ISO8601, используя только номер недели и года?Количество недель между двумя датами iso8601
Вход: год1 week1 YEAR2 week2
Выход: Количество недель в соответствии с ISO8601
Я могу рассчитать количество недель в году:
public static int AmountOfWeeksInYearIso8601(this DateTime dateTime)
{
var year = dateTime.Year;
var g = Math.Floor((year - 100d)/400d) - Math.Floor((year - 102d)/400d);
var h = Math.Floor((year - 200d)/400d) - Math.Floor((year - 199d)/400d);
var f = 5 * year + 12 - 4 * (Math.Floor(year/100d) - Math.Floor(year/400d)) + g + h;
return f % 28 < 5 ? 53 : 52;
}
Это немного запутанно, поскольку номер недели и год не составляют дату - можете ли вы уточнить свой вопрос немного больше? – stuartd
@stuartd «позволяющий годам» достаточно, чтобы сделать это нетривиальным: он требует выяснить, какие годы имеют 52 недели и которые имеют 53. – hvd
@stuartd В нумерации по ИД, которая может упасть на неделю 1 следующего год. – hvd