我正在尝试使用"半月"进行日期计算。半月多少天? AddMonths(0.5)不起作用:)
Console.WriteLine("SemiMonthly : " + date.AddMonths(0.5)); //This does not work
答案 0 :(得分:3)
我想根据这个月增加一半月意味着你可以这样做:
public static DateTime AddHalfMonth(DateTime dt, MidpointRounding rounding)
{
int daysInMonth = System.DateTime.DaysInMonth(dt.Year, dt.Month);
if(daysInMonth % 2 == 0)
return dt.AddDays(daysInMonth / 2);
else if(rounding == MidpointRounding.ToEven)
return dt.AddDays(daysInMonth / 2);
else
return dt.AddDays((daysInMonth + 1) / 2);
}
您可以这样使用它:
DateTime inHalfMonth = AddHalfMonth(date, MidpointRounding.ToEven);
答案 1 :(得分:3)
如果您愿意,可以通过以下方式添加当月的半天:
DateTime a = new DateTime();
a.AddDays(DateTime.DaysInMonth(a.Year, a.Month)/2);
答案 2 :(得分:1)
您必须明确定义什么"半月"意味着,在这样做的过程中,您将回答自己的问题。
为简单起见,我建议你只使用每个月的第一天和第十五天。
答案 3 :(得分:0)
你需要为此定义自己的约定 - 没有“半月”的规范概念。
答案 4 :(得分:0)
借用蒂姆答案中的一些概念,但附加逻辑允许时间表永远不会偏离半个月的标记。我注意到如果我从1月16日开始以递归方式运行该函数,那么第24项将于12月20日结束。我简化了这个功能并使其成为一个扩展。
{{1}}