将有2个切换按钮。一个将打开,另一个将打开 查询是当前月份是30天,那么它应该显示2017年8月1日至2017年8月16日,当我切换它应该显示8月16日至8月30日,类似的应该工作切换。 但是,如果当前月份是31天,那么它应该显示2017年8月1日至2017年8月16日以及8月16日至8月31日,类似的应该切换下来。如果我试图切换它应该继续工作它应该如下所示 1月1日至15日,1月16日至30日,2月1日至2月16日,它应该继续上下切换。 我试过的代码如下:
public static DateTime GetEndDate(int year, int month)
{
decimal currentmonth = System.DateTime.DaysInMonth(year, month);
decimal value = Math.Ceiling(Convert.ToDecimal(currentmonth / 2));
// DateTime updatedfinaldatevaluestart = new DateTime(year, month, day);
DateTime updatedfinaldatevalueend = new DateTime(year, month, Convert.ToInt32(value));
return updatedfinaldatevalueend;
}
public static DateTime GetStartDate(int year, int month)
{
decimal currentmonth = System.DateTime.DaysInMonth(year, month);
decimal value = Math.Ceiling(Convert.ToDecimal(currentmonth / 2));
// DateTime updatedfinaldatevaluestart = new DateTime(year, month, day);
DateTime updatedfinaldatevalueend = new DateTime(year, month, 01);
return updatedfinaldatevalueend;
}
答案 0 :(得分:1)
您不必进行所有这些计算。所有月份的上半部分总是在1日到15日之间(你不必计算15日。没有一个月有45天)。并且,下半部分将始终从16日开始,您可以通过执行此操作来获取月份的结束日期(startDate
是该月的第一天):
var endDate = startDate.AddMonths(1).AddDays(-1);
答案 1 :(得分:0)
我怀疑有更好的方法来做你想要实现的目标,但问题中没有足够的信息来确定那是什么(调用这些方法是什么,发生了什么输出等)但是,使用您发布的方法,此(未经测试的)代码可能会执行您需要的操作
单击向下按钮时bool参数应为true,单击向上按钮时为false
public static DateTime GetEndDate(int year, int month, bool firstHalfOfMonth)
{
if (firstHalfOfMonth == false)
{
return GetStartDate(year, month, false);
}
else
{
return new DateTime(year, month, System.DateTime.DaysInMonth(year, month));
}
}
public static DateTime GetStartDate(int year, int month, bool firstHalfOfMonth)
{
if (firstHalfOfMonth == false)
{
int daysInCurrentMonth = System.DateTime.DaysInMonth(year, month);
int midMonth = Convert.ToInt32(Math.Ceiling((double)daysInCurrentMonth / 2));
return new DateTime(year, month, midMonth);
}
else
{
return new DateTime(year, month, 1);
}
}