Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从字符串“转换”&引用;输入';日期';无效_Vb.net - Fatal编程技术网

Vb.net 从字符串“转换”&引用;输入';日期';无效

Vb.net 从字符串“转换”&引用;输入';日期';无效,vb.net,Vb.net,嗨,有人能帮我解决这个问题吗?我坐着处理这个错误已经有一个小时了,但是我不知道如何修复这个错误。我的代码是 'Calculate the total of hours worked 'Declare a Date Time Variable Dim TempDateTime As DateTime = Nothing 'Declare a local time span variable Dim TempTimeSpan As New TimeSpan

嗨,有人能帮我解决这个问题吗?我坐着处理这个错误已经有一个小时了,但是我不知道如何修复这个错误。我的代码是

'Calculate the total of hours worked

'Declare a Date Time Variable   

    Dim TempDateTime As DateTime = Nothing
    'Declare a local time span variable
    Dim TempTimeSpan As New TimeSpan
    'Declare a array of type string and set the size equal to number of text boxes.
    Dim arr(6) As String
    'set the value for text boxs to array
    arr(0) = lblmontotal.Text
    arr(1) = lbltuestotal.Text
    arr(2) = lblwedtotal.Text
    arr(3) = lblthurstotal.Text
    arr(4) = lblfridtotal.Text

    For i As Integer = 0 To arr.Length - 1
        TempDateTime = CDate(arr(i))
        TempTimeSpan = TempTimeSpan.Add(New TimeSpan(TempDateTime.Hour, TempDateTime.Minute, 0))
    Next
    'showing the total time.
    lbltotalhours.Text = (TempTimeSpan.Hours & ":" & TempTimeSpan.Minutes)

尚未为数组元素5和6指定任何内容。当您点击循环中的这些元素时,
CDate
将返回您描述的错误

提示-像这样实例化数组。这样,编译器将为您计算长度并避免类似这样的错误

'set the value for text boxs to array
Dim arr As String() = {
    lblmontotal.Text,
    lbltuestotal.Text,
    lblwedtotal.Text,
    lblthurstotal.Text,
    lblfridtotal.Text
}
更新


关于第二个问题,有很多方法可以做到这一点,但最简单的方法是将值直接转换为
TimeSpan
,并且根本不必考虑
DateTime
变量。

您没有为数组元素5和6分配任何内容。当您点击循环中的这些元素时,
CDate
将返回您描述的错误

提示-像这样实例化数组。这样,编译器将为您计算长度并避免类似这样的错误

'set the value for text boxs to array
Dim arr As String() = {
    lblmontotal.Text,
    lbltuestotal.Text,
    lblwedtotal.Text,
    lblthurstotal.Text,
    lblfridtotal.Text
}
更新


关于第二个问题,有很多方法可以做到这一点,但最简单的方法是将值直接转换为
TimeSpan
,并且根本不必考虑
DateTime
变量。

您已经为七个项创建了一个数组,但只在前五个项中输入值。循环遍历数组中的所有项时,最后两项为空,因此无法将它们转换为日期

为五个项目创建一个数组:

Dim arr(4) As String

您已经为七个项目创建了一个数组,但只在前五个项目中输入值。循环遍历数组中的所有项时,最后两项为空,因此无法将它们转换为日期

为五个项目创建一个数组:

Dim arr(4) As String


使用
New DateTime(arr(i))
感谢您的快速回复。让我尝试一下。抱歉,我是一个noob,但我有另一个问题。尝试该代码后,返回此错误“从字符串“00:00:00”转换为类型“Long”无效。”我的lblmontotal.text格式是(“hh:mm:ss”),每个标签/数组元素的内容是什么?似乎您正在尝试将空字符串“转换”为日期,这显然是无效的。哦,顺便说一句,
Dim TempDateTime As DateTime=Nothing
是毫无用处的。您知道它的值是
01/01/0001 00:00:00
?这也是我努力坚持的一条规则。我尽量避免使用Microsoft.VisualBasic程序集中的任何内容。它只会导致脏东西…使用
New DateTime(arr(i))
谢谢你的快速回复。让我试试这个。嘿,很抱歉我是一个noob,但我有另一个问题。在尝试了那个代码之后,它返回这个错误“从字符串“00:00:00”转换为“Long”无效。”我的lblmontotal.text格式是(“hh:mm:ss”)每个标签/数组元素的内容是什么?似乎您正在尝试将空字符串“转换”为日期,这显然是无效的。哦,顺便说一句,
Dim TempDateTime As DateTime=Nothing
是毫无用处的。您知道它的值是
01/01/0001 00:00:00
?这也是我努力坚持的一条规则。我尽量避免使用Microsoft.VisualBasic程序集中的任何内容。它只会导致肮脏的东西…哦,是的…我忘了更改那一个…因为在我尝试计算周六和周日之前,这就是为什么我使用6aw是的…我忘了更改那一个…因为在我尝试计算周六和周日之前,这就是为什么我使用6是的,这都是我的错伙计们…谢谢你帮我修复错误,现在可以运行了…我很抱歉所有的麻烦..我只是忘记了在删除lblsattotal.text和lblsuntotal.text后更改它。此外,OP应该为每个循环使用一个
。为循环建立索引几乎完全没有必要了。我同意,只是试着做一些小步骤。就我个人而言,我会在一个LINQ表达式中完成整个代码块。:-)是的,我仍然是个笨蛋,但我正在尝试使用一个困难的代码=)…但是谢谢你的建议…是的,这都是我的错伙计们…谢谢你帮我修复错误,现在可以运行了…我很抱歉给你添麻烦…我只是忘记了在删除lblsattotal.text和lblsuntotal.text xD1000后更改它。此外,OP应该为每个
循环使用一个
。为循环建立索引几乎完全没有必要了。我同意,只是试着做一些小步骤。就我个人而言,我会在一个LINQ表达式中完成整个代码块。:-)是的,我还是个笨蛋,但我正在尝试使用一个困难的代码=)…但是谢谢你的建议。。