将VB.Net文本框输入转换为时间

时间:2015-12-03 20:43:29

标签: wpf vb.net vb.net-2010

我正在创建一个应用程序,需要允许用户输入一个4位数的文本字符串(例如1330或0100)并将该输入转换为包括AM / PM的时间。

实例 1330 =下午1:30; 0130 = 1:30 AM

我不确定最好的方法是什么。我想使用select case或嵌套ifs;但是,我觉得好像有更好,更快的方法来转换它。任何帮助都感激不尽。提前谢谢。

1 个答案:

答案 0 :(得分:1)

一种可能性是使用 Extended WPF Toolkit 中的DateTimePicker control或创建您自己的简单用户控件,例如两个小时和分钟部分的字段。

如果您想创建自己的解决方案:

解析用户输入字符串的代码:

private Function parseTime(ByRef hours as String) as String
    ' TODO: error handling
    Dim timeStamp as String = String.Format("{0} {1}:{2}", System.DateTime.Now.ToShortDateString(), hours.Substring(0, 2),hours.Substring(2, 2))
    Dim dateTime as DateTime
    if (DateTime.TryParse(timeStamp, dateTime)) then
        return String.Format("{0}{1}", dateTime.ToString("hh:mm", CultureInfo.InvariantCulture), dateTime.ToString("tt", CultureInfo.InvariantCulture))
    end if

    return String.Empty

end Function

用法:

Dim hoursPM as String = "1330"
Dim hoursAM as String = "0130"
Console.WriteLine(parseTime(hoursPM))
Console.WriteLine(parseTime("errr")) 'empty string indicates error
Console.WriteLine(parseTime(hoursAM))

输出:

01:30PM

01:30AM