【问题标题】:Console Application: User entered date Visual Basic控制台应用程序:用户输入日期 Visual Basic
【发布时间】:2014-09-24 21:09:38
【问题描述】:

我使用的是 VS 2013 和 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 输入的格式无效。

所以我尝试了这种方法,并得到错误“字符串未被识别为有效的日期时间”

如何格式化输入的日期,以便将其识别为有效的日期时间?

谢谢

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    不能强制用户以您期望的格式输入日期(尤其是在控制台应用程序中)。因此,您最好的做法是尝试解析此日期并通知您的用户输入无效

     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.TryParseExact 是 DateTime 的一种方法,它尝试将输入字符串相应地解析为指定的格式。如果字符串符合所需的格式,则该方法返回 true,并且最后一个参数设置为转换产生的日期时间。否则该方法返回 false 而不会引发异常,因此您可以采取适当的措施(在这种情况下再次请求输入)

    【讨论】:

    • 谢谢史蒂夫,我收到了未声明 CultureInfo 和 DateTimeStyles 并且由于保护级别而无法访问的错误。
    • 如果您查看异常消息,您应该会看到一个Import System.Globalization 链接。您应该添加此命名空间以获取此方法中使用的枚举(this question 中的此类问题)
    • 感谢史蒂夫解决了我的所有问题。我尝试过与您之前发送的代码类似的代码,如果我知道这就是我需要做的一切,我可能就不必问这个问题了。非常感谢您的帮助!
    • 我很高兴能提供帮助。正因为你是这个网站的新用户,我推荐阅读How to accept answers
    【解决方案2】:

    所有日期都作为日期存储在内存中,实际上没有格式。当您将日期更改为字符串时(即使用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))
    

    附:正如您所写的那样,命令输入会覆盖您的格式化字符串,因此您的格式化字符串实际上是无用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多