'string' 到 'System.IFormatProvider' 错误

'string' to 'System.IFormatProvider' Error

我试图在 C# 中获取“以前”的时间,但目前正在努力解决此错误。

基本上这就是我正在尝试的。

var dateAgo = $"{DateTime.Now.Subtract(booking.CreatedAt.Date)}";

booking.createdAt.Date 是保存我的预订日期的地方。 我可以在 HTML 中显示 @dateAgo 但问题是当我尝试

@DateTime.Now.Date.Subtract(booking.CreatedAt.Date).ToString("d")

遗憾的是,这不起作用。

使用DateTime.Now.Subtract(booking.CreatedAt.Date).Days

Subtract() 产生一个 TimeSpan,即 incompatible with using the "d" format specifier by itself。尝试别的东西,例如.ToString("%d").ToString("c").

或者,如果需要,TimeSpan 提供 .Days.Hours 等属性,可以代替使用。

DateTime.Subtract() 产生一个 TimeSpan 对象。 ToString("d") 不是标准的 TimeSpan 格式字符串。参见 Standard TimeSpan Format Strings

您想要输出天数的自定义格式字符串"d"。为此,将 "d" 更改为 "%d":

@DateTime.Now.Date.Subtract(booking.CreatedAt.Date).ToString("%d")

或者您可以简单地从 returned TimeSpan 对象中提取 Days,这将 return 天数:

@DateTime.Now.Date.Subtract(booking.CreatedAt.Date).Days.ToString()