“字符串”到“System.IFormatProvider”错误

问题描述

我正在尝试在 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")

或者您可以简单地从返回的 Days 对象中提取 TimeSpan,该对象将返回天数:

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