我只想获取从FromDate
到ToDate
的天数:
string dt_now = DateTime.Now.ToString("m/d/yyyy");
num_days = (Convert.ToDateTime(dt_now) - Convert.ToDateTime(dr4.GetString(13))).Days;
dr4.GetString(13)
来自数据库,格式与 m / d / yyyy
dr4.GetString(13)
的样本数据:
但是我遇到一个错误:
字符串未被识别为有效的DateTime
我应该如何正确做?
答案 0 :(得分:2)
与其使用字符串来表示日期格式,不如将日期值存储为数据库中的datetime
数据类型并使用DataReader.GetDateTime()
来检索它:
// common usage
num_days = (DateTime.Now - dr4.GetDateTime(13)).Days;
// alternative with Subtract()
num_days = DateTime.Now.Subtract(dr4.GetDateTime(13)).Days;
对于当前状态,请使用以下代码:
var date = DateTime.ParseExact(dr4.GetString(13).Trim(), "M/d/yyyy", CultureInfo.InvariantCulture);
num_days = DateTime.Now.Subtract(date).Days;
答案 1 :(得分:1)
您不能简单地这样做吗?
var provider = CultureInfo.InvariantCulture;
var format = "M/d/yyyy";
var d2 = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine(" Days: {0,3}", (DateTime.Now - d2).Days);
此处参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.totaldays?view=netframework-4.7.2
答案 2 :(得分:0)
您可以像这样使用Timespan
类:
string dr4 = "10/2/2018";
TimeSpan duration = DateTime.Now.Subtract(DateTime.Parse(dr4, CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal));
int result = duration.Days;