C#从DateTime变量中减去DateTime小时数

C#从DateTime变量中减去DateTime小时数,c#,datetime,hour,date-arithmetic,C#,Datetime,Hour,Date Arithmetic,我想与以下日期进行比较: 我有一个变量DateTime,我想比较一下这个变量的时间是否小于实际时间 例: 您是否尝试改用DateTime变量?大概是这样的: DateTime date1 = new DateTime(2013, 1, 1, 13, 00, 36); DateTime dateNow = new DateTime.Now; Console.WriteLine(date1.ToString("T", CultureInfo.CreateSpecificCulture("es-ES

我想与以下日期进行比较:

我有一个变量DateTime,我想比较一下这个变量的时间是否小于实际时间

例:


您是否尝试改用
DateTime
变量?大概是这样的:

DateTime date1 = new DateTime(2013, 1, 1, 13, 00, 36);
DateTime dateNow = new DateTime.Now;

Console.WriteLine(date1.ToString("T", CultureInfo.CreateSpecificCulture("es-ES")));
// Outputs 6:30:00
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("en-US")));
// Outputs Tuesday, January 1, 2013 13:00:36 PM 
Console.WriteLine(dateNow.ToString());
// Outputs the current date/time
然后,您可以创建另一个DateTime并将它们作为
DateTime
变量而不是字符串进行比较,尽管您仍然可以使用
date1.ToString()函数将值作为字符串输出

更多信息请点击此处:

希望有帮助。

您可以使用和,如下所示

string value = "13:00:36";
DateTime dt;
if (DateTime.TryParseExact(value, "HH:mm:ss", CultureInfo.InvariantCulture,
                        DateTimeStyles.None, out dt))
{
    if (dt.TimeOfDay > DateTime.Now.TimeOfDay)
    {
        // greater than actual time 
    }
    else
    {
        // smaller than actual time
    }
}

由于您有字符串格式的时间,因此很难进行比较。您可以通过提供正确的格式字符串将其转换为Datetime。现在您有了两个DateTime对象,您可以通过
TimeOfDay
属性获取这些对象的时间并进行比较。

使用以下代码获取时间字符串作为DateTime实例:

 DateTime DateT = new DateTime.Now; 

 string Myvariable = "13:00:36";

 DateTime parsedTime = DateTime.ParseExact(
    Myvariable, 
    "HH:mm:ss", 
    CultureInfo.InvariantCulture);
parsedTime
将具有字符串变量中给定的时间成分(小时、分钟、秒),但它将具有不同的日期。字符串中不存在年、月和日组件,因此它们将默认为日期
DateTime.MinValue.date
。为了正确比较,您需要只比较时间部分:

bool isParsedGreater = parsedTime.Hours > DateT.Hours 
    && parsedTime.Minutes > DateT.Minutes 
    && parsedTime.Seconds > DateT.Seconds;

我想喝杯咖啡。。。请先读。嗯……咖啡@Marco,您需要使用各种常用方法之一(Google it)将字符串变量转换为DateTime,然后进行比较…但是,我如何将日期时间中的变量(如“2013-06-03 13:00:36”)与另一个日期时间变量(如“13:00:36”)进行比较?或者创建一个仅包含该日期的日期时间,然后只添加时间部分,以便可以将它们作为日期时间进行比较;或者只提取时间部分并将它们进行比较,如@Damith所示。不过,上面有更有效的解决方案。我在想别的事情。
bool isParsedGreater = parsedTime.Hours > DateT.Hours 
    && parsedTime.Minutes > DateT.Minutes 
    && parsedTime.Seconds > DateT.Seconds;