C# DateTime.toString在输出到电子邮件时随时间显示

C# DateTime.toString在输出到电子邮件时随时间显示,c#,asp.net-mvc,C#,Asp.net Mvc,编辑:我想出来了,我在这里解释 我填写了以下代码 我不想要时间部分,只想要年、日、月 //model public DateTime Indate { get; set; } //this is filled in by a form with "01/01/2015" //controller (DateTime)person.Indate).ToString("dd-MM-yyyy") 我没有注意到的是,这只适用于该行代码,我忽略了在任何地方添加该行 htmlBody1 += "&

编辑:我想出来了,我在这里解释

我填写了以下代码 我不想要时间部分,只想要年、日、月

  //model
public DateTime Indate { get; set; } //this is filled in by a form with "01/01/2015"

 //controller
(DateTime)person.Indate).ToString("dd-MM-yyyy")
我没有注意到的是,这只适用于该行代码,我忽略了在任何地方添加该行

htmlBody1 += "<tr><td style=\"width: 225px\">Starting Date Project </td><td>:&nbsp;" + person.Indate + "</td></tr>";
htmlBody1+=“项目开始日期:“+person.Indate+”;
这是我的错误行,我忘了在那里添加.ToString(“dd-MM-yyyy”)

我解决了


感谢Damien_这个不相信你的人,因为他指出,如果你有时输出格式,它就不记得你的格式了。这让我意识到我必须明确指出所有地方。

我刚刚运行了这段代码,它输出的正是您想要的:


您也可以使用,它将输出
28.10.2014
(基于您的文化),或者,它将输出相同的内容。

所示代码中缺少括号。您的格式化语句不是有效的C代码

有了那个沙特人,这对我很有用:

DateTime date = DateTime.Now;
System.Console.WriteLine(((DateTime)date).ToString("dd-MM-yyyy"));

该格式字符串将只显示日期,因此您的示例代码缺少实际出现问题的地方。我怀疑您的自定义格式没有被使用,而默认格式正在视图中出现。您的编辑显示了一个公共
DateTime
属性,没有任何数据注释,如果您在Razor视图中直接使用该属性,它可能会根据用户区域设置以默认方式格式化,因此您的自定义格式将丢失。另外,
DateTime
没有“格式”的概念,格式只在
DateTime
的可视表示中,而不是其值的一部分。使用
dt.ToString(“d”)
dt.toSortDateString
dt.ToString(“yyyy-dd-MM”)
您的代码应该正常工作。。那就是weird@TimSchmelter:所以用户不应该使用他们需要的格式,而必须使用其他格式?我怀疑您没有显示的是,您正在转换回
日期时间
,并且您(不知何故)希望该对象“记住”它只是由日期字符串构造的(甚至可能是它来自哪个格式). 这不是它的工作原理。
DateTime
存储日期的内部数字表示,不记得任何格式信息。