asp.net - 涉及日期时间的有点奇怪的 .NET 错误

标签 asp.net vb.net datetime

我在远程服务器上收到此错误,但相同的代码在本地执行正常。请不要说它很糟糕,或者对动态sql 进行咆哮,我没有写它,只是想弄清楚为什么它会抛出异常。突出显示的错误是第 56 行。

Protected Sub drpDateRange_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles drpRange.SelectedIndexChanged
    Dim sql As String = "SELECT postedDate, inspectionType FROM tInspectionRequest WHERE source_lookupID = 'IRS_WEB' "
    If _franchiseID > 0 Then sql &= " and franchiseeID = " & _franchiseID.ToString
    Dim db As New Database
    Dim ds As DataSet = db.selectQuery(sql)
    Dim dv As New DataView(ds.Tables(0))
    dv.RowFilter = "inspectionType='Buyer' AND postedDate >= #" & DateTime.Now.AddDays(-1) & "#"
    lblB1.Text = dv.Count
End Sub

这是一个异常(exception),似乎 DateTime.Now.AddDays(-1) 未能转换为日期时间?不管它是否是转换问题/日期到字符串错误,奇怪的是它只在远程服务器上失败,而不是在本地失败。

字符串未被识别为有效的日期时间。 描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.FormatException:字符串未被识别为有效的日期时间。

来源错误:

第 55 行:Dim dsInspectionHistory As DataSet = objDB.selectQuery(sqlInspectionHistory)

第 56 行:将 dvInspectionHistory 调暗为新 DataView(dsInspectionHistory.Tables(0))

第 57 行:dvInspectionHistory.RowFilter = "inspectionType='Buyer' AND postsedDate >= #"& DateTime.Now.AddDays(-1).ToString & "#"

第 58 行:lblB1.Text = dvInspectionHistory.Count

第 59 行:dvInspectionHistory.RowFilter = "inspectionType='Seller' AND postsedDate >= #"& DateTime.Now.AddDays(-1) & "#"

[FormatException:字符串未被识别为有效的日期时间。] System.DateTimeParse.Parse(字符串s,DateTimeFormatInfo dtfi,DateTimeStyles样式)+2291962 System.DateTime.Parse(String s, IFormatProvider 提供者) +26 System.Data.ConstNode..ctor(DataTable表,ValueType类型,对象常量, bool fParseQuotes)+485 System.Data.ExpressionParser.Parse() +830 System.Data.DataExpression..ctor(DataTable 表、字符串表达式、Type 类型) +124 System.Data.DataView.set_RowFilter(字符串值)+161 controls_inspectionRequestChart.drpRange_SelectedIndexChanged(对象发送者,EventArgs e)在 xxxx xxxx 中的controls_inspectionRequestChart.Page_Load(对象发送者,EventArgs e) System.Web.UI.Control.OnPreRender(EventArgs e)+2117788 System.Web.UI.Control.PreRenderRecursiveInternal() +86 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Page.ProcessRequestMain( bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)+2041

最佳答案

这可能是由于服务器和您的开发电脑之间的区域日期时间设置差异造成的。代码中的日期时间和字符串之间存在隐式转换(请记住它是内联 sql(编辑:RowFilter 语法),您没有设置参数)。

尝试格式化字符串

dv.RowFilter = "inspectionType='Buyer' AND postedDate >= #" & DateTime.Now.AddDays(-1).ToString("MMM dd yyyy hh.mm.ss") & "#"

关于asp.net - 涉及日期时间的有点奇怪的 .NET 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382197/

相关文章:

PHP 脚本不再修复日期时间字段

Visual Studio 2019 中的 asp.net core React redux 项目中的 JavaScript

.net - 如何将 e.Result(由 WCF 服务返回)转换为列表 <>?

asp.net - 如何将我的 ASP.NET 成员(member)数据库从 Express 更改为标准 SQL?

c# - 在邮件中附加 excel 后检索空白 Excel

javascript - 解析 date-fns 返回前一天的值

asp.net - ex 与 ex.ToString 之间有什么区别吗? ASP.NET

.net - 确定泛型参数是否为 Nullable 类型

.net - 为什么我不能添加对 system.web 的引用

java - 解析月份不带前导 0 的日期