我有这个代码:
startWeekDate = startWeekDate == null ? DateTimeHelpers.calcMondayDate(DateTime.Now) : DateTimeHelpers.calcMondayDate(startWeekDate.Value);
DateTime endWeekDate = startWeekDate.Value.AddDays(6);
Run Code Online (Sandbox Code Playgroud)
startWeekDate是一个可以为空的参数.这很好用,但是我想用以下格式对它进行格式化:String.Format("{d:0}",....)但是当我拍它时,我得到错误.
无法将类型'string'隐式转换为'System.DateTime?
我该如何解决这个问题?
/ M
编辑:
我试图将此添加到函数中,因为它应该总是在没有时钟的情况下返回dateformat,但是我在这段代码中得到了同样的错误:
public static DateTime calcMondayDate(DateTime input)
{
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = String.Format("{d:0}", input.AddDays(delta));
return monday;
}
Run Code Online (Sandbox Code Playgroud)
无法将类型'string'隐式转换为'System.DateTime'
嗯,但输入是DateTime,为什么它抱怨它是字符串?
你已经证明代码不会有问题,但不是代码确实有问题.请显示不编译的代码.这听起来像你想分配一个DateTime?变量的字符串值,如
startWeekDate = string.Format(...);
Run Code Online (Sandbox Code Playgroud)
这绝对不会起作用.一旦你把它作为一个字符串,你真的希望它用格式化的值做什么?在你想要字符串的地方使用它,而不是你想要的地方DateTime?.
添加一件事 - 您的第一行可以更简单地表达:
startWeekDate = DateTimeHelpers.calcMondayDate(startWeekDate ?? DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
编辑:现在你已经发布了你的代码,很明显为什么它不起作用 - 因为怀疑,你正在尝试为DateTime变量分配一个字符串值.
DateTime值没有格式.它们就像数字一样 - 它们的值不是固有的格式.就像0x10和16是相同的数字,只是写得不一样.
现在听起来你只是试图在没有时间的情况下返回日期 - 这样做更好:
return input.AddDays(delta).Date;
Run Code Online (Sandbox Code Playgroud)
该Date物业返回的DateTime日期与日期相同,但午夜时间.
另一方面,令人遗憾的是,.NET具有一组受限制的日期/时间类型,因此您无法真正代表无时间日期的想法.我正试图解决这个问题,但它还有一段时间才能结出果实......
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |