我正在创建一个应用程序,需要允许用户输入一个4位数的文本字符串(例如1330或0100)并将该输入转换为包括AM / PM的时间。
实例 1330 =下午1:30; 0130 = 1:30 AM
我不确定最好的方法是什么。我想使用select case或嵌套ifs;但是,我觉得好像有更好,更快的方法来转换它。任何帮助都感激不尽。提前谢谢。
答案 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