2

我有一个 xml 可以返回格式(2013 年 7 月 23 日下午 4:00)的时间我的问题是:我如何向 DateTime.ParseExact 解释我在“上午”或“下午”?我有这段代码,但它返回了一个异常(无法解析字符串)

我已经放置了一个示例字符串(2013 年 7 月 23 日下午 4:00),其中我将“pm”替换为空链“”。

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

非常感谢 :)

4

3 回答 3

6

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

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);
于 2013-07-23T07:44:57.407 回答
0

您需要以下tt格式:

string pattern = "MM/dd/yyyy h:mm 'UTC' tt";
DateTime time = DateTime.ParseExact(sb.ToString(), pattern, CultureInfo.InvariantCulture,
                                                      DateTimeStyles.AssumeUniversal |
                                                      DateTimeStyles.AdjustToUniversal);
于 2013-07-23T07:39:24.570 回答
0

H在您的模式中,预计时间为 24 样式。您需要tt(如上一个答案中所述)并且您h的模式必须很小:

string pattern = "MM/dd/yyyy h:mm 'UTC' tt";
于 2013-07-23T07:41:57.603 回答