根据im in im in im?
,我最简单的方法是什么?我可以使用Modulo之类的东西吗?我想要最简单的情况和最少的代码行
我的四分之一几个月是3,6,9和12个。
我想避免这样做这样的逻辑:
if (1 <= mymonth && mymonth <= 3)
mymonth = new DateTime(DateTime.Now.Year, 3, 15);
else if (4 <= mymonth && mymonth <= 6)
mymonth = new DateTime(DateTime.Now.Year, 6, 15);
else if (7 <= mymonth && mymonth <= 9)
mymonth = new DateTime(DateTime.Now.Year, 9, 15);
else
mymonth = new DateTime(DateTime.Now.Year, 12, 15);
您可以使用:
var quarterEndMonth = 3 * Math.Ceiling((double)currentMonth / 3);
演示
呢?
public DateTime GetQuarterEnd(int month)
{
if (month < 1 || month > 12)
throw new ArgumentException("month is not a valid Month of the year.");
var mod = month % 3;
var actual = month / 3 + (mod > 0 ? 1 : 0);
return new DateTime(DateTime.Now.Year, actual * 3, 15);
}
最少线可能是这样的:
var d = new DateTime(DateTime.Now.Year, 3*(1+(mymonth-1)/3), 15);
但这很丑陋:)
https://dotnetfiddle.net/hzfflf