【发布时间】:2014-08-14 07:34:35
【问题描述】:
DateTime FourDaysBefore = DateTime.Now.AddDays(-4);
DateTime Today = DateTime.Now;
string td = Today.ToString("MM-dd-yyyy");
DateTime CDate = Convert.ToDateTime(td);
DateTime EnteredDate = Convert.ToDateTime(datevalue);
string Edate = EnteredDate.ToString("MM-dd-yyyy");
DateTime txtdate = Convert.ToDateTime(Edate);
if (CDate.Month == txtdate.Month)
{
if (FourDaysBefore.Day <= txtdate.Day)
return false;
else
return true;
}
else
return false;
在这段代码中,datevalue 是字符串,它的格式是dd-MM-yyyy。
将datevalue 转换为DateTime 时,我得到"{10/8/2014 12:00:00 AM}"。
之后我想将其转换为"MM-dd-yyyy" 格式。但我得到"10-08-2014",其中 10 是日期,08 是月份。
请帮我将此"{10/8/2014 12:00:00 AM}" 转换为MM-dd-yyyy 格式
【问题讨论】:
-
也许
EnteredDate已经是错误的日期,datevalue的值是多少以及您使用的是什么文化(fe.e. en-us)? -
Convert.ToDateTime- 这不是按预期读取日期。 -
我觉得还是用
DateTime.ParseExact比较好 -
DateTimes 没有有“格式” - 只有在使用 字符串 时才会出现格式问题。因此,无论发生什么其他情况,从string Edate开始的两条线充其量是什么也没做,最坏的情况是破坏日期值。尽早从字符串转换一次,然后只对DateTime值进行操作。 -
这是“预期行为”,10-08-2014 可能是 2014 年 8 月 10 日或 2014 年 10 月 8 日。框架无法确定月份/日期部分采用这种特定格式,除非其中一个超过 12 岁。正如 Alizera 所说 - 使用 DateTime.ParseExact 但前提是您 100% 确定这是用户输入日期的格式。