0

我正在尝试采用不同的时间格式并将其解析为短时间格式“5:00 am”

我希望它能够找出这些不同的格式。“5am” “5:00am”, “05am”, “05:00am”, “5am” “5:00am”, “05am”, “05:00am”, “5”, “13”

这是我目前拥有的

string[] formats = { "hh", "%h", @"h\:mm", @"hh\:mm", @"d\.hh\:mm\:ss", "fffff", "hhmm" };
        TimeSpan newTime = new TimeSpan();

        if (TimeSpan.TryParseExact(txtEndTime.Text, formats, null, out newTime))
        {
            txtEndTime.Text = Parser.GetDateTime(newTime).ToShortTimeString();
        }
4

2 回答 2

0

我认为这实际上是这样

string[] formats = { "hh", "hhtt", "hh tt", "%h", "%htt", "%h tt", @"h\:mm", @"h\:mmtt", @"h\:mm tt", @"hh\:mm", 
                            @"hh\:mmtt", @"hh\:mm tt", @"d\.hh\:mm\:ss", @"d\.hh\:mm\:sstt", @"d\.hh\:mm\:ss tt", "fffff", 
                            "hhmm", "hhmmtt", "hhmm tt" };

        DateTime newDate = new DateTime();

        if (DateTime.TryParseExact(txtStartTime.Text, formats, null, DateTimeStyles.None, out newDate))
        {
            txtStartTime.Text = newDate.ToShortTimeString();
        }
于 2013-06-20T21:43:56.630 回答
0

首先看看这个(日期时间格式):

http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

在这种情况下,您不应使用 TimeSpan。相反,创建一个 DateTime 并使用它的方法 'ToString':

            string[] formats = { @"hh:mm tt", "%h", @"h\:mm", @"hh\:mm", @"d\.hh\:mm\:ss", "fffff", "hhmm" };
            var dat = new DateTime(2013, 6, 20, 5, 0, 0);
            var provider = CultureInfo.InvariantCulture;
            foreach (var format in formats)
            {
                textBox1.Text += dat.ToString(format, provider) + Environment.NewLine;
            }

编辑:还将提供者设置为“CultureInfo.InvariantCulture”。

于 2013-06-20T21:45:38.913 回答