Vb.net 控制台应用程序:用户输入的日期Visual Basic

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(

我正在使用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作为日期,但以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修复了我的所有问题。我曾经尝试过类似于您之前发送的代码,如果我知道这是我所需要做的全部,我可能就不必问这个问题了。非常感谢您的帮助!我很高兴能帮上忙。因为你是这个网站的新用户,我建议你阅读