而不是使用:
int noOfDaysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
我想使用传入的2个值来获取一个月内的天数:
public ActionResult Index(int? month, int? year)
{
DateTime Month = System.Convert.ToDateTime(month);
DateTime Year = System.Convert.ToDateTime(year);
int noOfDaysInMonth = DateTime.DaysInMonth(Year, Month);
(年,月)标记为无效参数?有任何想法吗?也许是system.conert.todatetime.month?
答案 0 :(得分:3)
它们是DateTime
个变量,但DaysInMonth
需要int
s:
int noOfDaysInMonth = DateTime.DaysInMonth(year.Value, month.Value);
如果它们可以为null:
int noOfDaysInMonth = -1;
if(year != null && month != null)
noOfDaysInMonth = DateTime.DaysInMonth(year.Value, month.Value);
答案 1 :(得分:1)
DateTime.DaysInMonth
方法没有超载,需要两个DateTime
个实例。您只需将收到的参数直接传递给DateTime
,而不是创建这两个DaysInMonth
实例。
请注意,方法不能取空值,因此要么删除nullables或清理输入,即:检查年份和月份是否为空,如果是,则使用一些默认值代替。
答案 2 :(得分:0)
DateTime.DaysInMonth采用int参数而非日期时间参数
public static int DaysInMonth(
int year,
int month
)
但要注意,你传递的是可空的int。因此,请检查它们是否有价值
if(month.HasValue && year.HasValue)
{
var numOfDays = DaysInMonth(year.Value, month.Value);
}
答案 3 :(得分:0)
您不需要在此处使用任何DateTime
对象,但需要来验证输入!
public ActionResult Index(int? month, int? year)
{
int noOfDaysInMonth = -1;
if(year.HasValue && year.Value > 0 &&
month.HasValue && month.Value > 0 && month.Value <=12)
{
noOfDaysInMonth = DateTime.DaysInMonth(year.Value, month.Value);
}
else
{
// parameters weren't there or they had wrong values
// i.e. month = 15 or year = -5 ... nope!
noOfDaysInMonth = -1; // not as redundant as it seems...
}
// rest of code.
}
if
有效,因为条件是从左到右评估的。