减去不使用日期时间

本文关键字:日期 时间 | 更新日期: 2023-09-27 17:58:04

我正在尝试将一些计算出的秒数减去实际时间:

DateTime start = new DateTime();
start = DateTime.Now.Subtract(Convert.ToDateTime(stringTime));

它说参数不是"TimeSpan",但DateTime也应该有效。。。它必须接受这两种参数。

我正在VS 2012上使用带有Windows窗体的Framework 2.0。

更新:发现错误;substract返回时间跨度。

start = Convert.ToDateTime(Convert.ToDateTime(stringTime).Subtract(DateTime.Now));

正在工作。

谢谢。

减去不使用日期时间

您可以:

  1. 减去TimeSpan,得到DateTime,或
  2. 减去DateTime,得到TimeSpan

您正试图减去一个DateTime,得到一个DateTime。没有这样的方法。

如果将DateTime类型参数传递给Subtract()方法,则返回类型为TimeSpan。如果传递TimeSpan类型,则返回的是DateTime。

因此,这两种类型都被接受为参数,您只需要确保您有正确的返回类型。

查看DateTime.cshttp://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1057

public TimeSpan Subtract(DateTime value) {
        return new TimeSpan(InternalTicks - value.InternalTicks);
    }
public DateTime Subtract(TimeSpan value) {
    long ticks = InternalTicks;            
    long valueTicks = value._ticks;
    if (ticks - MinTicks < valueTicks || ticks - MaxTicks > valueTicks) {
        throw new ArgumentOutOfRangeException("value", Environment.GetResourceString("ArgumentOutOfRange_DateArithmetic"));
    }
    return new DateTime((UInt64)(ticks - valueTicks) | InternalKind);
}