我的开始日期必须有效,必须在请求日期之后进行。 当我在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);
答案 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;
}
希望它有所帮助。