部署应用程序时的日期时间错误
本文关键字:时间 错误 日期 应用程序 部署 | 更新日期: 2023-09-27 18:08:50
我有一个必须有效的开始日期,它必须发生在请求日期之后。当我在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")));
我从数据库中获取请求日期,并将其设置为:
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);
加载日期来自用户,在前端格式化为: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);
服务器有不同的地区和语言设置,所以日期格式不同。你需要为你的日期设置一个格式。
它在白天较低或等于12时工作?
您应该显式地将字符串转换为具有定义格式的DateTime。见下文:
var startDateString = "23-02-2015";
var startDate = DateTime.ParseExact(startDateString, "dd-MM-yyyy", CultureInfo.InvariantCulture);
那么你可以只比较两个日期而不是整数。
首先检查服务器在哪里。我也处理过同样的问题。所以我转换时区。使用以下语法
为这个创建一个公共类,并使用所有的每一个地方,
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;
}
希望对你有帮助。