【问题标题】:Adding days to only date and then subtracting it from date in c#仅将日期添加到日期,然后从 c# 中的日期中减去它
【发布时间】:2017-06-01 13:14:32
【问题描述】:

我知道这个话题已经被讨论过了,但我想只为日期添加天数,而不是完整的日期时间,然后我需要用日期减去它。我到目前为止所做的是:

string endDate = DateTime.Now.AddDays(2).ToShortDateString();

现在这给了我像19-jan-17 这样的字符串,这很好,但是当我想用今天的日期减去它时,它会给出错误,因为结束日期在字符串中。我试过下面的代码:

TimeSpan diff = DateTime.Now.ToShortDateString() - endDate ;

TimeSpan diff = DateTime.Now.ToShortDateString() - Convert.ToDateTime(endDate)

TimeSpan diff = DateTime.Now.ToShortDateString() - Convert.ToString(endDate)

如果我将DateTime.Now.ToShortDateString() 更改为DateTime.Now,那么它也会包含我不想要的时间。我只想在日期中添加天数,然后用今天的日期减去它。

任何建议。请帮忙。

【问题讨论】:

  • 为什么要比较日期时间和字符串?存储日期时间而不是字符串。 如果你想显示它使用ToStringToShortDateString,而不是之前。如果您想忽略DateTime 的时间部分,请使用DateTime.Date,例如:if(DateTime.Today == otherDateTime.Date)...
  • 预期输出是多少?能举个例子吗?

标签: c# date datetime


【解决方案1】:

您是否尝试过以下操作?

string endDate = DateTime.Now.Date.AddDays(2);

不过,尚不清楚您为什么必须这样做。一些上下文对于提出其他解决方案很有帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    DateTime endDate = DateTime.Today.AddDays(2);
    
    TimeSpan diff = DateTime.Today - endDate
    

    Today 属性将仅返回日期部分(因此时间将为 00:00:00),但仍位于 DateTime 结构中,因此您可以通过从中减去另一个 DateTime 来获得 TimeSpan。

    【讨论】:

    • 谢谢。但 DateTime.Today 还包括时间 12:00。但没关系,因为时间的价值保持不变。
    • 当然可以。 DateTime 结构不能只保存日期。这就是为什么Date 属性和Today 属性返回一个以午夜为时间部分的日期。
    【解决方案3】:

    我加入 Federico,你需要使用 DateTime 实例的 Date 属性。它将返回日期的 00:00:00 时刻。

    附注: 在计算差异之前,只需将所有日期保留在 DateTime 中(例如,不要将它们转换为字符串)。 例如:

    TimeSpan diff = DateTime.Now.Date - endDate; 
    

    如果需要日期部分,可以在计算后使用格式字符串。 例如:

    endDate.ToString("yyyy.MM.dd")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多