将DateTime解析为通用时间C#

本文关键字:时间 DateTime | 更新日期: 2023-09-27 18:24:28

我有一个xml,它可以以格式(7/23/2013 4:00pm)返回时间。我的问题是:我如何向DateTime.ParseExact解释我在"am"还是在"pm"?我有这段代码,但它给我返回了一个异常(字符串无法解析)

我已经放置了一个示例字符串(7/23/2013 4:00pm),其中我用空链"替换了"pm"。

string pattern = "MM/dd/yyyy H:mm 'UTC' zzz";
DateTime time = DateTime.ParseExact(sb.ToString(), pattern, CultureInfo.InvariantCulture,
                                                      DateTimeStyles.AssumeUniversal |
                                                      DateTimeStyles.AdjustToUniversal);

非常感谢:)

将DateTime解析为通用时间C#

您可以传递一个数组来覆盖各种格式。我将以下内容用于各种时间输入。

var formats = new[] 
    {
        "M/dd/yyyy hh:mm tt",
        "M/dd/yyyy hh:mmtt",
        "M/dd/yyyy h:mm tt",
        "M/dd/yyyy h:mmtt",
        "M/dd/yyyy hhtt",
        "M/dd/yyyy htt",
        "M/dd/yyyy h tt",
        "M/dd/yyyy hh tt"
    };
    var date = "7/23/2013 4:00pm";
    DateTime time = DateTime.ParseExact(date, formats, CultureInfo.InvariantCulture,
                                                  DateTimeStyles.AssumeUniversal |
                                                  DateTimeStyles.AdjustToUniversal);

H在您的模式中期望24样式中的时间。您需要tt(如前面的答案所述),并且您的模式中必须有一个小的h

string pattern = "MM/dd/yyyy h:mm 'UTC' tt";

您需要tt格式:

string pattern = "MM/dd/yyyy h:mm 'UTC' tt";
DateTime time = DateTime.ParseExact(sb.ToString(), pattern, CultureInfo.InvariantCulture,
                                                      DateTimeStyles.AssumeUniversal |
                                                      DateTimeStyles.AdjustToUniversal);