C# 将字符串解析为可用格式,并将其与当前日期进行比较&;时间

C# 将字符串解析为可用格式,并将其与当前日期进行比较&;时间,c#,datetime,date-format,C#,Datetime,Date Format,我正在尝试解析一个类似这样的string 20190903T114500,000 并将其与当前时间和日期进行比较。当日期和时间相隔仅5分钟时,它应该发出警报 然而,我正在努力完成这项任务的每一部分。这个格式没有意义,我不能改变它,因为中间的那个代码>“t”/代码>。 首先,您应该解析> 指定的字符串(源代码/代码>)进入日期时间< /代码>。格式中有meaing(请查看标准以供参考)。唯一的困难是T和,,它们可以被转义: 然后找出区别: TimeSpan diff = time - DateT

我正在尝试解析一个类似这样的
string

20190903T114500,000
并将其与当前时间和日期进行比较。当日期和时间相隔仅
5
分钟时,它应该发出警报


然而,我正在努力完成这项任务的每一部分。这个格式没有意义,我不能改变它,因为中间的那个代码>“t”/代码>。

首先,您应该<代码>解析> <代码>指定的字符串(<代码>源代码/代码>)进入<代码>日期时间< /代码>。格式中有meaing(请查看标准以供参考)。唯一的困难是
T
,它们可以被转义:

然后找出区别:

TimeSpan diff = time - DateTime.Now; 
最后,在需要时发出警报:

if (diff.TotalMinutes >= -5.0 && diff.TotalMinutes <= 5.0) {
  //TODO: raise the alert here
}

if(diff.TotalMinutes>=-5.0&&diff.TotalMinutes首先使用
DateTime.TryParseExact
将字符串转换为日期。上面示例的格式类似于
yyyyMMddTHHmmss,fff
。一旦字符串转换为日期,您就可以使用
DateTime。现在。减去
函数以获得所需的输出。检查下面的检查普尔

    static void Main(string[] args)
    {
        Console.WriteLine(DateTime.Now.Subtract(ParseDate("20190903T114500,000")).TotalMinutes);
    }

    private static DateTime ParseDate(string providedDate)
    {
        DateTime validDate;
        string[] formats = { "yyyyMMddTHHmmss,fff" };
        var dateFormatIsValid = DateTime.TryParseExact(
          providedDate,
          formats,
          CultureInfo.InvariantCulture,
          DateTimeStyles.None,
          out validDate);
        return dateFormatIsValid ? validDate : DateTime.MinValue;
    }

请参阅和的文档哦,我的天,谢谢!我正在调整代码,它似乎可以工作!!!我终于理解了,谢谢!
    static void Main(string[] args)
    {
        Console.WriteLine(DateTime.Now.Subtract(ParseDate("20190903T114500,000")).TotalMinutes);
    }

    private static DateTime ParseDate(string providedDate)
    {
        DateTime validDate;
        string[] formats = { "yyyyMMddTHHmmss,fff" };
        var dateFormatIsValid = DateTime.TryParseExact(
          providedDate,
          formats,
          CultureInfo.InvariantCulture,
          DateTimeStyles.None,
          out validDate);
        return dateFormatIsValid ? validDate : DateTime.MinValue;
    }