为什么这个日期时间解析总是失败?

发布于 2024-12-11 01:58:54 字数 1425 浏览 0 评论 0原文

有人能看到我在这里做错了什么吗? Assert.IsTrue(parses) 总是失败。

    [TestMethod]
    public void Can_Parse_To_DateTime()
    {
        DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59);
        DateTime actual;

        string value = "Wed Oct 19 16:01:59 PDT 2011";
        string  mask = "ddd MMM dd HH:mm:ss xxx YYYY";

        bool parses = DateTime.TryParseExact(value, mask, 
                                             CultureInfo.InvariantCulture, 
                                             DateTimeStyles.None, 
                                             out actual);

        Assert.IsTrue(parses);
        Assert.AreEqual(expected, actual);
    }

我也尝试过,结果相同:

    [TestMethod]
    public void parsing()
    {
        DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59);
        DateTime actual;

        string value = "Wed Oct 19 16:01:59 PDT 2011";
        string  mask = "ddd MMM dd HH:mm:ss YYYY"; // note removal of "xxx "

        value = value.Remove(20, 4);  // removal of the "PDT "
        bool parses = DateTime.TryParseExact(value, mask, 
                                             CultureInfo.InvariantCulture, 
                                             DateTimeStyles.None, 
                                             out actual);

        Assert.IsTrue(parses);
        Assert.AreEqual(expected, actual);
    }

Can anyone see what I'm doing wrong here? The Assert.IsTrue(parses) always fails.

    [TestMethod]
    public void Can_Parse_To_DateTime()
    {
        DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59);
        DateTime actual;

        string value = "Wed Oct 19 16:01:59 PDT 2011";
        string  mask = "ddd MMM dd HH:mm:ss xxx YYYY";

        bool parses = DateTime.TryParseExact(value, mask, 
                                             CultureInfo.InvariantCulture, 
                                             DateTimeStyles.None, 
                                             out actual);

        Assert.IsTrue(parses);
        Assert.AreEqual(expected, actual);
    }

I have also tried it thus, with the same result:

    [TestMethod]
    public void parsing()
    {
        DateTime expected = new DateTime(2011, 10, 19, 16, 01, 59);
        DateTime actual;

        string value = "Wed Oct 19 16:01:59 PDT 2011";
        string  mask = "ddd MMM dd HH:mm:ss YYYY"; // note removal of "xxx "

        value = value.Remove(20, 4);  // removal of the "PDT "
        bool parses = DateTime.TryParseExact(value, mask, 
                                             CultureInfo.InvariantCulture, 
                                             DateTimeStyles.None, 
                                             out actual);

        Assert.IsTrue(parses);
        Assert.AreEqual(expected, actual);
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三岁铭 2024-12-18 01:58:54

正如 Matt Hamilton 所指出的,yyyy 必须是小写。而 xxx 是完全无效的。您始终可以使用反向方法 DateTime.ToString(format,CultureInfo.InvariantCulture) 测试格式字符串。

As noted by Matt Hamilton, yyyy must be lowercase. And xxx is totally invalid. You can always test your format string using reverse method DateTime.ToString(format,CultureInfo.InvariantCulture).

浅沫记忆 2024-12-18 01:58:54
 string mask = "ddd MMM dd HH:mm:ss PDT yyyy";
 string mask = "ddd MMM dd HH:mm:ss PDT yyyy";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文