Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码从未达到if(DateTime.Now==myTime)值_C#_Asp.net_.net_Datetime - Fatal编程技术网

C# 代码从未达到if(DateTime.Now==myTime)值

C# 代码从未达到if(DateTime.Now==myTime)值,c#,asp.net,.net,datetime,C#,Asp.net,.net,Datetime,我有一个简单(愚蠢)的代码,我用它来测试我们的错误记录机制。它试图从一个不存在的文件中读取。在异常中,我设置了一个DateTime值,然后有一个while循环。一旦当前日期时间等于我设置的日期时间值,那么我将异常传递给我的错误日志项目 此代码从按下按钮开始。这样做的目的是,我可以测试在ASP.NET应用程序中从单独的用户会话引发多个异常时会发生什么 因此,我会打开一些浏览器会话,按下“异常”按钮,然后该代码将运行。一旦当前时间与我设置的时间匹配,它就会抛出一个异常,但是if(DateTime.N

我有一个简单(愚蠢)的代码,我用它来测试我们的错误记录机制。它试图从一个不存在的文件中读取。在异常中,我设置了一个DateTime值,然后有一个while循环。一旦当前日期时间等于我设置的日期时间值,那么我将异常传递给我的错误日志项目

此代码从按下按钮开始。这样做的目的是,我可以测试在ASP.NET应用程序中从单独的用户会话引发多个异常时会发生什么

因此,我会打开一些浏览器会话,按下“异常”按钮,然后该代码将运行。一旦当前时间与我设置的时间匹配,它就会抛出一个异常,但是
if(DateTime.Now==run)
的计算结果永远不会为true。为什么?

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        string text = System.IO.File.ReadAllText(@"C:\test.txt");
    }
    catch (FileNotFoundException ex)
    { 
        DateTime run = new DateTime(2013, 12, 18, 14, 0, 0);
        bool hasRun = false;

        while (hasRun == false)
        {
            if (DateTime.Now == run)
            {
                ErrorLogger errorLogger = new ErrorLogger(ex);
                hasRun = true;
            }
        }
    }
}
如果(DateTime.Now>=运行)

类似于使用float或double检查相等性的陷阱,如果(DateTime.Now>=run)

类似于使用float或double检查相等性的陷阱,如果(DateTime.Now>=run)

类似于使用float或double检查相等性的陷阱,如果(DateTime.Now>=run)


类似于用float或double检查相等性的陷阱,我想你只是没有考虑到时间永远不会四舍五入到秒这个事实。总有毫秒。如果要比较,只需使用此代码段

var date = DateTime.Now;
date = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second)
if (date == run)
{ 

我想你只是没有考虑到时间永远不会四舍五入到秒这个事实。总有毫秒。如果要比较,只需使用此代码段

var date = DateTime.Now;
date = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second)
if (date == run)
{ 

我想你只是没有考虑到时间永远不会四舍五入到秒这个事实。总有毫秒。如果要比较,只需使用此代码段

var date = DateTime.Now;
date = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second)
if (date == run)
{ 

我想你只是没有考虑到时间永远不会四舍五入到秒这个事实。总有毫秒。如果要比较,只需使用此代码段

var date = DateTime.Now;
date = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second)
if (date == run)
{ 

在if条件下尝试以下操作:

if (Datetime.Now.Subtract(run).Days == 0)
{
    // code goes here if the run and Datetime.Now are on the same day
}

在if条件下尝试以下操作:

if (Datetime.Now.Subtract(run).Days == 0)
{
    // code goes here if the run and Datetime.Now are on the same day
}

在if条件下尝试以下操作:

if (Datetime.Now.Subtract(run).Days == 0)
{
    // code goes here if the run and Datetime.Now are on the same day
}

在if条件下尝试以下操作:

if (Datetime.Now.Subtract(run).Days == 0)
{
    // code goes here if the run and Datetime.Now are on the same day
}

使用
计时器
可以生成更清晰、风险更小的代码(没有可能无限循环):


使用
计时器
可以生成更清晰、风险更小的代码(没有可能无限循环):


使用
计时器
可以生成更清晰、风险更小的代码(没有可能无限循环):


使用
计时器
可以生成更清晰、风险更小的代码(没有可能无限循环):



表达式
DateTime.Now==run
的计算结果不太可能为真,你不这么认为吗?假设
DateTime
精确到10000分之一毫秒?换句话说,使用
而不是
=
。@CiaranGallagher您没有设置毫秒,但是
DateTime。现在
设置了毫秒。想象一下,比较两个双精度值
1.0
1.1
,并期望它们相等,因为您在第一个值中设置了
.0
。@CiaranGallagher:不,因为DateTime。现在精确到毫秒。Is 1.12345==1.123456?@CiaranGallagher-A基本上是一个穿着考究的
(U)Int64
从0001-01-01开始计算滴答声。如果这样创建,所有未指定的时间部分都将自动设置为零。表达式
DateTime.Now==run
的计算结果不太可能为真,你不这样认为吗?假设
DateTime
精确到10000分之一毫秒?换句话说,使用
而不是
=
。@CiaranGallagher您没有设置毫秒,但是
DateTime。现在
设置了毫秒。想象一下,比较两个双精度值
1.0
1.1
,并期望它们相等,因为您在第一个值中设置了
.0
。@CiaranGallagher:不,因为DateTime。现在精确到毫秒。Is 1.12345==1.123456?@CiaranGallagher-A基本上是一个穿着考究的
(U)Int64
从0001-01-01开始计算滴答声。如果这样创建,所有未指定的时间部分都将自动设置为零。表达式
DateTime.Now==run
的计算结果不太可能为真,你不这样认为吗?假设
DateTime
精确到10000分之一毫秒?换句话说,使用
而不是
=
。@CiaranGallagher您没有设置毫秒,但是
DateTime。现在
设置了毫秒。想象一下,比较两个双精度值
1.0
1.1
,并期望它们相等,因为您在第一个值中设置了
.0
。@CiaranGallagher:不,因为DateTime。现在精确到毫秒。Is 1.12345==1.123456?@CiaranGallagher-A基本上是一个穿着考究的
(U)Int64
从0001-01-01开始计算滴答声。如果这样创建,所有未指定的时间部分都将自动设置为零。表达式
DateTime.Now==run
的计算结果不太可能为真,你不这样认为吗?假设
DateTime
精确到10000分之一毫秒?换句话说,使用
而不是
=
。@CiaranGallagher您没有设置毫秒,但是
DateTime。现在
设置了毫秒。想象一下,比较两个双精度值
1.0
1.1
,并期望它们相等,因为您在第一个值中设置了
.0
。@CiaranGallagher:不,因为DateTime。现在精确到毫秒。Is 1.12345==1.123456?@CiaranGallagher-A基本上是一个穿着考究的
(U)Int64
从0001-01-01开始计算滴答声。如果你这样创建它,所有你没有指定的时间部分都会自动设置为零。这正是我需要的,不知为何我没有想到:)这正是我需要的,不知为何我没有想到:)这正是我需要的,不知为何我没有想到:)这正是我需要的,不知为何我没有想到:)