2 个 iso8601 日期之间的周数
Amount of weeks between 2 iso8601 dates
如何仅使用周数和年数来计算 2 个 ISO8601 日期之间的周数?
输入:
第一年
第一周
第二年
第 2 周
输出:
根据 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;
}
创建 DateTime
对应于两周中的星期一的值。请参阅 Calculate date from week number 了解如何执行此操作。减去这些得到 TimeSpan
的差值。请求它的 Days
属性 以获得天数的差异。除以 7 得到周数的差值。
如何仅使用周数和年数来计算 2 个 ISO8601 日期之间的周数?
输入: 第一年 第一周 第二年 第 2 周
输出: 根据 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;
}
创建 DateTime
对应于两周中的星期一的值。请参阅 Calculate date from week number 了解如何执行此操作。减去这些得到 TimeSpan
的差值。请求它的 Days
属性 以获得天数的差异。除以 7 得到周数的差值。