部署应用程序时的日期时间错误

本文关键字:时间 错误 日期 应用程序 部署 | 更新日期: 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;
    }

希望对你有帮助。