将一个字符串转换为一个日期时间

我正在使用vb框架3.5开发asp.net网站。

我在将字符串数据转换为日期时遇到了困难 我尝试使用cdate函数。

我有一个变量sdate,它是一个字符串变量,日期存储在其中,它来自文本框的dd/mm/yyyy,现在我想把这个字符串转换成一个日期变量,因为我需要执行加一天或减一天的操作。

请指导我如何去做。我在第三行得到的错误是:"字符串没有被识别为有效的日期时间"。我试着按以下方法操作,但错误出现了

Dim sdate As String 
Dim expenddt As Date
expenddt = Date.Parse(edate)
expenddt = expenddt.AddDays(-1)

但我得到的错误是

从字符串到日期类型的转换是无效的。

我怎样才能从字符串中得到一个`日期'?

解决办法

你应该使用Date.ParseExactDate.TryParseExact与正确的格式字符串。

 Dim edate = "10/12/2009"
 Dim expenddt As Date = Date.ParseExact(edate, "dd/MM/yyyy", 
            System.Globalization.DateTimeFormatInfo.InvariantInfo)

 Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
 Dim expenddt As Date = Date.ParseExact(edate, format,  
     System.Globalization.DateTimeFormatInfo.InvariantInfo, 
     Globalization.DateTimeStyles.None)

Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
Dim expenddt As Date
Date.TryParseExact(edate, format, 
    System.Globalization.DateTimeFormatInfo.InvariantInfo, 
    Globalization.DateTimeStyles.None, expenddt)
评论(2)

尝试使用DateTime.ParseExact方法,在该方法中,你可以同时指定日期时间掩码和原始解析字符串。 你可以在这里阅读相关信息。MSDN: DateTime.ParseExact

评论(3)

试着像这样转换日期。

    Dim expenddt as Date = Date.ParseExact(edate, "dd/mm/yyyy", 
System.Globalization.DateTimeFormatInfo.InvariantInfo);

希望这有帮助。

评论(1)