C# iis7上的日期时间比较

C# iis7上的日期时间比较,c#,asp.net,iis-7,C#,Asp.net,Iis 7,我正在创建一个web应用程序,需要比较两个日期和时间(甚至是秒) 为此,我使用以下代码: //Check for delete button DateTime dtmEndDate; DateTime.TryParse(dtCommunication.Rows[0]["DateEnd"].ToString(), out dtmEndDate); if (dtmEndDate<=DateTime

我正在创建一个web应用程序,需要比较两个日期和时间(甚至是秒)

为此,我使用以下代码:

//Check for delete button
                DateTime dtmEndDate;
                DateTime.TryParse(dtCommunication.Rows[0]["DateEnd"].ToString(), out dtmEndDate);

                if (dtmEndDate<=DateTime.Now)
                {

                //}
                //if DateTime.Compare(DateTime.Now.ToLocalTime(),dtmEndDate.ToLocalTime()) >= 0)
                //{
                    btnSend.Visible = false;
                    btnBack.Visible = false;

                    btnDelete.Visible = true;
                    btnCancel.Visible = true;         
                }
//检查删除按钮
日期时间;
DateTime.TryParse(dtCommunication.Rows[0][“DateEnd”].ToString(),out dtmEndDate);
如果(dtmEndDate=0)
//{
btnSend.Visible=false;
btnBack.Visible=false;
btnDelete.Visible=true;
btnCancel.Visible=真;
}
如果EndDate datetime已过,则它将进入if块

这在本地可以正常工作,但是当我在服务器上上传代码时,它就不能正常工作了。我该怎么办


示例:
dtmEndDate=2012年12月27日下午7:00
当前印度时间=2012年12月27日晚上8:00
当前服务器时间=2012年12月27日上午8:30


以上是场景。

TryParse如果尝试并失败,则返回false

DateTime dtmEndDate;
if (DateTime.TryParse(dtCommunication.Rows[0]["DateEnd"].ToString(), out dtmEndDate))
{
   // okey dokey
}
else
{
   throw new SomeException(String.Format("{0} is not a valid date",dtCommunication.Rows[0]["DateEnd"].ToString());
}

这将是一个良好的开端。猜测可能是dateend为空,不是日期或不是应用程序设置格式的日期。查看ParseExact和System.Globalization命名空间的CultureInfo。

您在服务器上调试过它吗?她是你的朋友。你期待什么日子?您是否确认数据库返回了一个有效的日期(通过您在应用程序外部使用的任何SQL编辑器)?@Wonko the Sane:正确地标记文本是正确的。这不一定能回答问题。您正在格式化标签的日期吗?您需要绝对了解dtmEndDate的值。如果不检查返回值,调用TryParse没有多大意义——这只是隐藏错误。如果您跨时区工作,我强烈建议您对所有
DateTime
s使用UTC,至少在内部使用(如果需要,将用户输入/输出转换为用户输入)。您可以有
DateTime
s,它们都是
Local
(或
Unspecified
),但如果它们来自不同的TZ,那么比较它们就没有多大意义。不确定这是否是一个促成因素,但请相信我UTC是您的朋友。在服务器上?总是在我看来,这是一个典型的错误假设。如果没有更多的信息,就无法真正帮助您,增强代码,输出到if和else语句中的日志,清楚地了解正在发生的事情。不要做任何假设。要么是蓝色的小里格利人突然来跟你开恶作剧,要么你会给人留下荷马·辛普森的印象。我的经验告诉我一个很有说服力的Doh!更有可能。我添加了一个时间示例。请再看一遍这个问题。看起来是@David用UTC命名的。