Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';设置两个不同月份的日期的最佳方法是什么?_C#_Datetime - Fatal编程技术网

C# 什么';设置两个不同月份的日期的最佳方法是什么?

C# 什么';设置两个不同月份的日期的最佳方法是什么?,c#,datetime,C#,Datetime,我试图呈现一个视图,该视图显示两个日期之间的一些记录,当未传递任何参数时,该视图必须显示一个月的记录,从第5天开始,直到下个月的下一个第5天 现在我做到了,但我很关心我的代码,有没有其他方法可以做到这一点,我的意思是,让我的代码看起来更好 var dateStart = new DateTime(); var dateEnd = new DateTime(); if(dateTime !=null) { dateStart = Convert.ToDateTime(dateTim

我试图呈现一个视图,该视图显示两个日期之间的一些记录,当未传递任何参数时,该视图必须显示一个月的记录,从第5天开始,直到下个月的下一个第5天

现在我做到了,但我很关心我的代码,有没有其他方法可以做到这一点,我的意思是,让我的代码看起来更好

var dateStart = new DateTime();
var dateEnd = new DateTime();

if(dateTime !=null)
{  
     dateStart = Convert.ToDateTime(dateTime);
     dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
}
else
{
     if (DateTime.Today.Day <= 4)
     {
          DateTime lastMonth = DateTime.Today.AddMonths(-1);
          dateStart = new DateTime(lastMonth.Year, lastMonth.Month, 5);
          dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
     }

     DateTime date = DateTime.Today;
     dateStart = new DateTime(date.Year, date.Month, 5);
     dateEnd = new DateTime(date.Year, date.Month + 1,5);
}
var dateStart=new DateTime();
var dateEnd=new DateTime();
if(dateTime!=null)
{  
dateStart=Convert.ToDateTime(日期时间);
dateEnd=新的日期时间(dateStart.Year,dateStart.Month+1,5);
}
其他的
{

如果(DateTime.Today.Day您不应该添加这样的月份,因为在12月它试图创建一个月为13的DateTime时,您将得到无效的
DateTime
,因此我将使用
AddMonths
方法。您似乎还需要添加另一个
else语句
以便第二个
if语句
不是无关紧要的。我稍微简化了代码,这就是你的意思吗

var dateStart = new DateTime();
var dateEnd = new DateTime();

if(dateTime !=null)
{  
     dateStart = Convert.ToDateTime(dateTime);
     dateEnd = new DateTime(dateStart.Year, dateStart.Month, 5).AddMonths(1);
}
else
{
     if (DateTime.Today.Day <= 4)
     {
          dateStart = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 5).AddMonths(-1);
          dateEnd = dateStart.AddMonths(1);
     }
     else
     { 
          dateStart = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 5);
          dateEnd = dateStart .AddMonths(1);
     }
}
var dateStart=new DateTime();
var dateEnd=new DateTime();
if(dateTime!=null)
{  
dateStart=Convert.ToDateTime(日期时间);
dateEnd=新的日期时间(dateStart.Year,dateStart.Month,5).AddMonths(1);
}
其他的
{

如果(DateTime.Today.Day这将在12月份引发异常:

dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
您可以尝试:

DateTime dateEnd = dateStart.AddMonths(1);
dateEnd = new DateTime(dateEnd.Year, dateEnd.Month, 5);

你可能还想检查代码是否正确。你测试过了吗?你的else部分不起作用。你总是覆盖在
if(DateTime.Today.Day)中计算的值,[entity framework]标记的作用是什么?@evanmcdonnal我不同意,12月份使用此方法会给你13个月,这将导致“不可表示的日期时间”exception@GertArnold很抱歉,删除了那个标签,非常感谢你的更正,加上我没有想到的几个月!