C#如何创建日期和时间范围?

4

我有一个处理日志文本文件的程序,可以检索日期时间,并将其转换为系统的DateTime格式。

然而,该程序似乎无法识别所选的各种日期时间范围。程序应该检索用户选择的日期和时间之间的记录。

问题可能是代码的顺序吗?

请问有人可以就代码提供建议吗?谢谢!

代码:

            String timeDate2 = result1.ToString("MM/dd/yyyy HH:mm:ss");

            Console.WriteLine("The last written time to the registry was : " + timeDate2);

            TimeSpan.TryParse("12/02/2010 16:04:17", out t1);
            TimeSpan.TryParse("12/09/2010 05:12:42", out t2);
            TimeSpan.TryParse(timeDate2, out t3);

            if ((t3 >= t1 && t3 <= t2) == true)    // Is t3 between t1 and t2?
            {
                foreach (String k in lines.Skip(12))
                {
                    Console.WriteLine(k);
                }
             x = 1;
            }

            else
            {
                x = 2;
            }

            Console.WriteLine("============================================================");

        }

        if (x == 2)
        {
            Console.WriteLine("There is no selected days within the log files!");
        }

"== true" 是多余的,而且你确定 'lines' 有超过12行吗? - GreyCloud
验证 TryParse 的 (bool) 结果(如果文本被正确解码,则应为 true),并检查 "out" 值,那是您预期的日期和/或时间吗? - Hans Kesting
1个回答

1
TimeSpan.TryParse("12/02/2010 16:04:17", out t1);
TimeSpan.TryParse("12/09/2010 05:12:42", out t2);
TimeSpan.TryParse(timeDate2, out t3);

TimeSpan通常没有日期,因为它是一个时间段,即天数、小时数和分钟数,而不是日期。TimeSpan是两个日期之间的时间定义。 在MSDN页面上查看更多信息

将其修复为DateTime.TryParse

(并检查解析后的t1/t2/t3值是什么)


程序正在使用 DateTime.TryParseExact 方法,结果可能是 "12/09/2010 05:12:42" 等等。 - JavaNoob
TimeSpan.TryParse的参数应该采用'[ws] [-]{d | d.hh:mm[:ss[.ff]] | hh:mm[:ss[.ff]]}[ws]'格式,例如"99.23:59:59"表示99天23小时59分59秒。 - RvdK
抱歉刚才没有仔细阅读,t1的结果为:"2010年12月2日下午4:04:17",t2的结果为:"2010年12月5日上午5:12:42",而timeDate的结果为:"2010年12月09日05:12:42",在TimeSpan被更改为DateTime后。 - JavaNoob
@JavaNoob:如果真正的程序使用了DateTime.TryParse(-Exact),为什么在你的示例中要使用TimeSpan.TryParse呢? - Hans Kesting
也许将if语句重写为"if ((t3 >= t1) && (t3 <= t2))"会更好。"== true"是多余的,注意额外的括号以澄清意思。 - RvdK
@Hans 我对 TimeSpan 的使用方式不确定,因为它包括了天数但没有日期,直到 Powe 提到了这个区别。 - JavaNoob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接