C#时间减法问题

C#时间减法问题,c#,datetime,C#,Datetime,我一直面临C#中时间减法的问题 例如,我在2017年4月5日11:56:27下午开始计时,并在2017年5月5日12:10:27上午结束计时,当我减去此值时,显示结果23小时 我想让它显示精确的时间,比如14分钟。我也在分享我的代码 double rate1 = Convert.ToDouble(rate.Text); double value = rate1 / 3600; DateTime dt = DateTime.Parse(text3.Text); DateTime edt = Dat

我一直面临C#中时间减法的问题

例如,我在2017年4月5日11:56:27下午开始计时,并在2017年5月5日12:10:27上午结束计时,当我减去此值时,显示结果23小时

我想让它显示精确的时间,比如14分钟。我也在分享我的代码

double rate1 = Convert.ToDouble(rate.Text);
double value = rate1 / 3600;
DateTime dt = DateTime.Parse(text3.Text);
DateTime edt = DateTime.Parse(text5.Text);
var res = dt.Subtract(edt).ToString().Replace('-', ' ');
DateTime tt = Convert.ToDateTime(res);
DateTime dt1 = DateTime.Parse(text4.Text);
DateTime edt1 = DateTime.Parse(text6.Text);
var res1 = dt.Subtract(edt1).ToString().Replace('-', ' ');
double sec = TimeSpan.Parse(res).TotalSeconds;
double sec1 = TimeSpan.Parse(res1).TotalSeconds;
text7.Text = res.ToString();
text8.Text = res1.ToString();

看起来您可能有复制/粘贴错误。在这行中,您的意思是引用
dt1
而不是
dt

var res1 = dt.Subtract(edt1).ToString().Replace('-', ' ');

看起来你展示了很多很难为我们重现的代码,而且变量名也不是最清晰的。我假设
dt
代表“日期时间”,而
edt
代表“结束日期时间”。如果这是正确的,那么您将从开始日期中减去结束日期,而不是反过来(您应该从较大的日期中减去较小的日期)

因此,这里是如何获得开始和结束之间的差异(我使用印地语文化信息来实现这一点):

你说你想要“精确的时间,比如14分钟”。我不确定这是否意味着您不想显示其余的值,但这里有几种显示方法

Console.WriteLine($"General short string format: {difference:g}");

Console.WriteLine(
    "Custom string format: {0} days, {1} hours, {2} minutes, {3} seconds",
    difference.Days, difference.Hours, difference.Minutes, difference.Seconds);

Console.WriteLine("In terms of minutes, the total minutes difference is: {0}", 
    difference.TotalMinutes);
请注意,第二个示例和第三个示例在显示分钟数的方法中存在差异<代码>分钟将仅显示差异的分钟部分
TotalMinutes
将以分钟为单位显示整个差异。在您的情况下,它们是相同的,但是如果差异是1小时14分钟,
minutes
仍然是
14
,但是
TotalMinutes
将是
74

输出如下所示:


它是向后的,从开始时间中减去结束时间。然后通过添加代码来消除减号,从而忽略了该错误。开始正确地执行此操作以取得成功。您想要的确切输出是什么?这根本不清楚检查你的日期格式。它是
MM/DD/YYYY
。你的约会是在不同的月份,所以你得到的答案是正确的。必须清楚。格式是MM/DD/yyyyy HH:MM:SS吗?如果变量具有有意义的名称,并且我们知道
text3.Text
之类的值是什么,那么您的代码将更容易调试。例如,
DateTime startDateTime=DateTime.Parse(“4/5/2017 11:56:27 PM”)
。如果你忽略了诸如
rate1
value
之类与所讨论的操作无关的内容,这也会让事情变得更容易。我认为部分问题在于我们使用的是en-US语言环境,而他可能使用了不同的东西,因此不清楚他在寻找Hanks@JoePhillips。更新了印地语文化信息,即
dd/mm/yyyy
这看起来好多了,符合他现在的要求:)谢谢先生,是的,这正是我想要的。14分钟表示两次之间的实际差异
Console.WriteLine($"General short string format: {difference:g}");

Console.WriteLine(
    "Custom string format: {0} days, {1} hours, {2} minutes, {3} seconds",
    difference.Days, difference.Hours, difference.Minutes, difference.Seconds);

Console.WriteLine("In terms of minutes, the total minutes difference is: {0}", 
    difference.TotalMinutes);