Vb.net 控制台应用程序:用户输入的日期Visual Basic
我正在使用VS2013和VB语言 我的任务是以mm/dd/yyyy格式存储用户输入的日期Vb.net 控制台应用程序:用户输入的日期Visual Basic,vb.net,Vb.net,我正在使用VS2013和VB语言 我的任务是以mm/dd/yyyy格式存储用户输入的日期 Dim date1 As String = Format("MM/dd/yyyy") Dim date2 As Date Dim date3 As Date date1 = Console.ReadLine() date2 = DateTime.Now date3 = DateTime.Parse(date1) Console.ReadLine(
Dim date1 As String = Format("MM/dd/yyyy")
Dim date2 As Date
Dim date3 As Date
date1 = Console.ReadLine()
date2 = DateTime.Now
date3 = DateTime.Parse(date1)
Console.ReadLine()
我第一次尝试将日期输入为Dim date1作为日期,但以mm/dd/yyyy格式输入该日期无效
因此,我尝试了这个方法,并得到错误“字符串未被识别为有效的日期时间”
如何设置输入日期的格式,以便将其识别为有效的日期时间
谢谢无法强制用户以您期望的格式输入日期(尤其是在控制台应用程序上)。因此,您最好的做法是尝试解析此日期,并通知用户输入无效
Dim isValid = False
Dim dt As DateTime
While(Not isValid)
Console.WriteLine("Please enter a date in the format MM/dd/yyyy")
Dim input = Console.ReadLine()
isValid = DateTime.TryParseExact(input, "MM/dd/yyyy", _
CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
End While
是DateTime的一个方法,它尝试根据指定的格式解析输入字符串。如果字符串符合所需格式,则该方法返回true,最后一个参数设置为转换产生的日期时间。否则,该方法将返回false而不引发异常,以便您可以采取适当的措施(在本例中,再次请求输入)所有日期都作为日期存储在内存中,并且实际上没有格式。当您将日期更改为字符串时(即使用
date.ToString()
方法),将显示格式
我认为这里最好的选择是使用不带参数的Date.Parse()
,这样命令行将接受所有的日期格式(准备捕捉格式异常),然后当您需要向用户显示日期时,使用格式字符串和Date.ToString()
方法对其进行格式化
代码示例如下:
Dim strDateFormat = "MM/dd/yyyy"
Dim date2 As Date
Dim date3 As Date
date2 = Now()
date3 = Date.Parse(Console.ReadLine())
Console.WriteLine(date3.ToString(strDateFormat))
另外,正如您所写的,命令输入会覆盖您的格式字符串,因此您的格式字符串实际上是无用的。谢谢Steve,我收到一个错误,即未声明CultureInfo和DateTimeStyles,并且由于保护级别的原因,无法访问我的。如果查看异常消息,您应该会看到一个导入系统的
链接。您应该添加此名称空间以获取此方法中使用的枚举(类似于中的问题),感谢Steve修复了我的所有问题。我曾经尝试过类似于您之前发送的代码,如果我知道这是我所需要做的全部,我可能就不必问这个问题了。非常感谢您的帮助!我很高兴能帮上忙。因为你是这个网站的新用户,我建议你阅读