日期时间格式转换失败

4

我正在尝试使用不变文化和默认选项,使用 M/d/yyyy H:m:s a 格式来解析 4/27/2011 12:00:00 AM ,但是它无法解析。

如果有人能帮助我弄清楚问题所在,我将非常感谢。


3
以后如果您能提供一个简短但完整的程序来演示问题,那将会很有帮助。 - Jon Skeet
2个回答

10

你的日期格式缺失了上午/下午标识符tt,而你的输入文本中却存在。另外,你想要使用12小时制的小时数h而不是24小时制的小时数,同时看起来你的分钟和秒总是两位数,因此你可能只需要一个这样的日期格式:M/d/yyyy h:mm:ss tt

以下是可行的示例代码:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        DateTime value;
        if (DateTime.TryParseExact("4/27/2011 12:00:00 AM",
                                   "M/d/yyyy h:mm:ss tt",
                                   CultureInfo.InvariantCulture,
                                   DateTimeStyles.None,
                                   out value))
        {
            Console.WriteLine(value);
        }
    }
}

请参阅MSDN以获取有关自定义日期和时间格式字符串的更多信息。


1
谢谢tt,我在某个地方读到过'a'是上午/下午的标识符。但它仍然不想使用H标识符解析小时数。为什么? - lua.rasta
@lua.rasta:你得到了12,这意味着当作为24小时制的小时数解析时,它将是PM...但你也有AM。这就是为什么我的示例代码使用h的原因... - Jon Skeet

5

这个模式是不正确的 - 没有 a 格式说明符 - 应该是 tt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接