部署应用程序时的datetime错误

时间:2014-06-16 09:09:35

标签: c# datetime

我的开始日期必须有效,必须在请求日期之后进行。 当我在visual studio中的调试和发布模式中进行比较时,它很好。 现在我部署了应用程序,但比较时间又回来了:

  

loadingdate 01-01-0001无效

即使日期设置为未来,例如:23-02-2015。

private Boolean IsStartDateValid(ShipmentPlanningTruck truck)
{
   int comparedDate = truck.Loadingdate.CompareTo(requestdate);

   if (comparedDate < 0)
      return false;
   return true;
 }

,电话就在这里:

if (!IsStartDateValid(truck))
     throw new Exception(String.Format("Loadingdate {0} is invalid", truck.Loadingdate.ToString("dd-MM-yyyy")));

我从数据库中获取requestdate并将其设置为:

if (DateTime.TryParseExact(dr["HRDTE"].ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out requestdate))
    header.Requestdate = requestdate;
 else
    header.Requestdate = default(DateTime);

loadingdate来自用户,前端格式为:return expexteddate.ToString("dd-MM-yyyy");

在验证完成之前,loadingdate被暂停到日期时间:

 DateTime loadingDate;
 if(DateTime.TryParse(dr["Loadingdate"].ToString(), out loadingDate))
        truck.Loadingdate = loadingDate;
 else
        truck.Loadingdate = default(DateTime);

3 个答案:

答案 0 :(得分:2)

服务器具有不同的区域和语言设置,因此日期格式不同。您需要为日期设置格式。

当天低于12时会起作用吗?

答案 1 :(得分:1)

您应该使用定义的格式将字符串显式转换为DateTime。见下文:

var startDateString = "23-02-2015";
var startDate = DateTime.ParseExact(startDateString, "dd-MM-yyyy", CultureInfo.InvariantCulture);

然后你可以比较两个日期而不是整数。

答案 2 :(得分:0)

首先检查您的服务器在哪里。我也处理同样的问题。所以我转换时区。使用以下语法

为此创建一个公共类,并使用所有地方,

    public static DateTime CurrentTime()
    {


        DateTime dateTime = DateTime.Now;
        var timeZone = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, TimeZoneInfo.Local.Id, "India Standard Time"); // here you can mention the timeZone exactly.
        return timeZone;
    }

希望它有所帮助。