2011-11-29 66 views
1

我想获取日期的差异,从两个TextBox说和日期..转换日期从文本框的日期在ASP.Net

我的代码是在这里

Dim ts As TimeSpan    
ts = CDate(txtTo.Text) - CDate(txtFrom.Text) 
txtDays.Text = ts.Days() + 1 

但是这个代码是抛出这样的错误

Conversion from string "16/11/2011" to type 'Date' is not valid. 

回答

6

一般来说,尽量避免使用旧的VB函数,如CDate。在这种情况下,你应该使用Parse方法:

Dim ts As TimeSpan 
ts = DateTime.Parse(txtTo.Text) - DateTime.Parse(txtFrom.Text) 

或者,如果你事先知道日期格式:

Dim fmt As String = "dd/MM/yyyy" 
Dim ts As TimeSpan 
ts = DateTime.ParseExact(txtTo.Text, fmt, Nothing) - DateTime.ParseExact(txtFrom.Text, fmt, Nothing) 
+0

其抛出一个像这样的错误'String was not reco gnized作为一个有效的DateTime.' –

+0

很可能你必须指定适当的日期格式。我会更新我的答案。 –

0

您可以直接将字符串转换为DateTime。您需要使用DateTime.Parse函数将字符串解析为DateTime。

语法可以找到here

+0

它抛出一个错误像这样'字符串不被认为是一个有效的DateTime.' –

+0

我的日期格式是dd/mm/yyyy like 29/11/2011印度日期格式 –

3

尝试使用ParseExact,如:

Dim s As String = txtFrom.Text.trim 
    Dim pattern As String = "dd/MM/yyyy" 
    Dim parsedDate As Date = Date.ParseExact(s, pattern, Nothing) 

作为该你可以指定使用的字符串格式。

更多的直接到你的例子:

Dim pattern As String = "dd/MM/yyyy" 
ts = Date.ParseExact(txtTo.Text, pattern, Nothing) - Date.ParseExact(txtFrom.Text, pattern, Nothing) 
0

使用重载版本的函数:

DateTime value = DateTime.Parse(txtFrom.Text, new CultureInfo("gu-IN", false)); 

其中, “GU-IN” 是古吉拉特语(印度)