首页 > 解决方案 > 使用 C# 如何将此字符串解析为时间

问题描述

我有一个 C# Visual Studio Web 应用程序,它使用 Telerik RadTimePickers 来收集开始时间和结束时间,格式为 24 小时制。这两个元素作为格式为 09:00:00-09:30:00 的字符串存储在数据库中。

现在,当应用程序从数据库中检索数据时,我需要将该字符串转换为 24 小时格式的 2 个单独时间,以便我可以将这些值用作 RadTimePickers 的选定时间。

我使用下面的代码从字符串中提取两个日期;

if (Results.TimeOfDay != "-" || Results.TimeOfDay != null)
                    {                        
                            string[] times = Results.TimeOfDay.Split('-');
                            string time1 = times[0];
                            RadTimePicker1.SelectedTime = ParseTime(time1);
                            string time2 = times[1];
                            RadTimePicker2.SelectedTime = ParseTime(time2);
                    }

ParseTime 的代码如下所示:

 static public TimeSpan ParseTime(string input)
    {
        TimeSpan output;
        var ok = TimeSpan.TryParseExact(input, @"hh\:mm\:tt", CultureInfo.InvariantCulture,out output);
        return output;
    }

但它不起作用,var ok 值返回 false,输出值为 1/1/0001 12:00:00 AM。C# 新手,无法弄清楚如何解决此问题。有人可以帮忙吗

根据评论,我更改了要解析的代码

     static public TimeSpan ParseTime(string input)
    {
        TimeSpan output;
        var ok = TimeSpan.TryParseExact(input, @"hh\:mm\:tt", CultureInfo.InvariantCulture,out output);
        return output;
    }

标签: c#datetime

解决方案


if (Results.TimeOfDay != "-" || Results.TimeOfDay != null)

这始终是正确的,因为您在询问 .TimeOfDay 或“09:00:00-09:30:00”是否不等于“-”。你应该Results.TimeOfDay.Contains("-")改用。

还,

@"h:mm tt"

这应该是@"hh:mm:tt"

编辑:对不起应该是@"hh\:mm\:ss"


推荐阅读