【问题标题】:ASP.NET "String was not recognized as a valid DateTime."ASP.NET“字符串未被识别为有效的日期时间。”
【发布时间】:2015-09-30 13:09:19
【问题描述】:

首先,我意识到已经有 100 万页在讨论这个问题。我已经看过至少一百个,但似乎无法完成这项工作。我的日期和时间显示为一个字符串,从 javascript 编译以获取客户端的本地时间。它的格式如下:7/11/2015 8:34 PM。 我目前有:

Dim datetimeformated = DateTime.ParseExact(lblDateTime.Text, "MM/dd/yyyy HH:mm tt", CultureInfo.InvariantCulture)

我尝试了许多不同的变体,但我认为这应该是正确的,但它不起作用。任何帮助是极大的赞赏。 TIA

【问题讨论】:

    标签: asp.net vb.net datetime


    【解决方案1】:

    对于您的情况,正确的格式是:M/dd/yyyy h:mm tt,甚至可能是 M/d/yyyy h:mm tt,如果您可以将月份中的某天设为一位数。


    说明:为什么您的格式字符串不起作用。

    MM: 表示您的月份必须始终有 2 位数字,显然您的示例中不是这种情况。

    dd: 再次,意味着您必须始终使用 2 位数字表示月份中的某天。是这样吗?根据需要调整参数。

    HH:这实际上意味着您期望使用 24 小时制 (00-23) 的小时值是 2 位数字,这在两个帐户中显然是错误的。您可以有一个数字,但您使用 24 小时制,因为您使用的是 AM/PM 指示符。

    相关文档链接:Custom Date and Time Format Strings

    【讨论】:

    • 谢谢,非常感谢您的解释。但是,这仍然会引发相同的错误。我现在使用“M/d/yyyy h:mm tt”。问题可能出在 CultureInfo 参数上吗?
    • 没有。如果有的话,使用CultureInfo.InvariantCulture 可以确保行为一致,因此它实际上应该让我们更容易看到相同的结果。所以这对你不起作用? Console.WriteLine(DateTime.ParseExact("7/11/2015 8:34 PM", "M/d/yyyy h:mm tt", CultureInfo.InvariantCulture));。或者您是否收到使用不同日期字符串的错误?
    • Dim datetimeformated = DateTime.ParseExact("7/11/2015 8:34 PM", "M/d/yyyy h:mm tt", CultureInfo.InvariantCulture) 工作得很好。但是当我替换我的字符串时,它会抛出错误。
    • 如果我在调试它,我会这样做:将这一行添加到代码中:System.Diagnostics.Debug.WriteLine("'" & lblDateTime.Text & "'")。然后我会在打开DebugView tool 的情况下运行代码以查看该行。然后我会仔细检查字符串,看看它是否有什么奇怪的地方。如果您可以发布您获得的字符串,那将很有帮助。再说一次,这个字符串一定有一些有趣和意想不到的地方,即使它似乎显示得很好。你需要找到那是什么。某处有额外的空间?
    • 好吧,至少这解释了为什么格式化不起作用。现在你需要弄清楚为什么它是空白的:)
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多