sql datetime和Datetime.Now之间的比较

时间:2015-12-30 15:23:19

标签: c# sql-server datetime

我想要的是比较sql table datetime值和Datetime.Now之间的时间 sql表中的值没有秒(i-e 1900-01-01 00:23:00.000) 而我的Datetime.Now值也是秒数(i-e 1900-01-01 00:23:47.000)。
当我尝试比较这两个时间时,由于来自Datetime.Now的秒部分,它会跳转到下一个if else条件

这是我的代码

if (MedRmndrDat.Valid)
{
    foreach (var MedReminder in MedRmndrDat.Data)
    {
        if (Convert.ToBoolean(MedReminder.EveryDay))
        {
            if (DateTime.Now >= MedReminder.MedicationIntakeStartDate)
            {
       **//it is not performing this if condition, it keeps jumping on next condition***                                  
                if (DateTime.Now==MedReminder.TimeSchedule1) 

                {
                    MessageSenderUtility.Sendsms(MobileNum, item.UserName, MedReminder.Description, MedReminder.MedicationName, MedReminder.Quantity.ToString());
                }

                else if (DateTime.Now == MedReminder.TimeSchedule2)
                {
                   ... Some code ...
                }

                else if (DateTime.Now == MedReminder.TimeSchedule3)
                {
                       ... Some code ...
                }
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

首先,您应该只声​​明DateTime.Now 一次并在整个过程中使用声明的值,以避免在此过程中更改DateTime.Now值,从而呈现您的比较无效(因为它们不比较相同的DateTime)。

DateTime dtnow = DateTime.Now; //use dtnow for the subsequent comparison

第一 dtnow 之前在之上声明if

其次,关于您的问题,您可以做的是使用DateTime类中的Add[Time]方法删除DateTime的第二部分和毫秒部分。这样的事情会做:

dtnow = dtnow.AddSeconds(-dtnow.Second).AddMilliseconds(-dtnow.Millisecond); //Note the negative sign

这样,您可以删除不想使用的过多的秒和毫秒,并且您已准备好进行干净的比较!

答案 1 :(得分:1)

您需要从DateTime.Now中删除秒和毫秒,并在比较中使用它。

因此,您必须先将当前时间存储在本地变量中:

DateTime testTime = DateTime.Now;
testTime = testTime.AddSeconds(-testTime.Second).AddMilliseconds(-testTime.Millisecond);

然后在比较中使用它:

if (testTime >= MedReminder.MedicationIntakeStartDate)
{
    if (testTime == MedReminder.TimeSchedule1) 
    {
        ... some code
    }
    else if (testTime == MedReminder.TimeSchedule2)
    {
       ... some code ...
    }
    else if (testTime == MedReminder.TimeSchedule3)
    {
       ... some code ...
    }

答案 2 :(得分:0)

您可以使用DateTime中的日期属性,然后使用 AddHours AddMinutes

var myDate = DateTime.Now;
myDate = myDate.Date.AddHours(myDate.Hour).AddMinutes(myDate.Minute)

然后你的代码就像这样

if (MedRmndrDat.Valid)
{
    var now = DateTime.Now;
    now = now.Date.AddHours(now.Hour).AddMinutes(now.Minute)
    foreach (var MedReminder in MedRmndrDat.Data)
    {
        if (Convert.ToBoolean(MedReminder.EveryDay))
        {
            if (DateTime.Now >= MedReminder.MedicationIntakeStartDate)
            {
                if (now == MedReminder.TimeSchedule1) 
                {
                    MessageSenderUtility.Sendsms(MobileNum, item.UserName, MedReminder.Description, MedReminder.MedicationName, MedReminder.Quantity.ToString());
                }

                else if (now == MedReminder.TimeSchedule2)
                {
                   ... Some code ...
                }

                else if (now == MedReminder.TimeSchedule3)
                {
                       ... Some code ...
                }
            }
        }
    }
}