将不同的时间格式解析为短时间格式

时间:2013-06-20 21:26:52

标签: c# visual-studio-2012

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

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

这是我目前所拥有的

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();
        }

2 个答案:

答案 0 :(得分: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();
        }

答案 1 :(得分: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'。