vb.net减法给出错误消息,用于减去两个数字

时间:2015-04-22 14:25:28

标签: vb.net

我正在尝试在vb.net中使用此代码

num_days = todate_split(0) - fromdate_split(0)

找出之间的天数。例如,todate_split(0)等于20而fromdate_split(0)等于5所以它应该返回15

但我收到错误说:

Operator '-' is not defined for types 'Char' and 'Char'

更新:

我也在使用这段代码:

fromdate_split.Split("/")

分割字符串

它们采用日期格式,例如2015年12月30日

我希望得到两个日期(天)之间的差异

3 个答案:

答案 0 :(得分:3)

您要做的是解析日期并获得TimeSpan

Dim todate As DateTime = DateTime.Parse(todateString)
Dim fromdate As DateTime = DateTime.Parse(fromdateString)

Dim diff As TimeSpan = todate - fromdate

这样您可以获得以下天数:

Dim days As Int32 = diff.Days

答案 1 :(得分:2)

如果todate_splitfromdate_split是字符串,在给定错误消息的情况下似乎是这种情况,则无法减去它们。我怀疑您有Option StrictOff,字符串为"20""5"

首先使用Int32或使用Int32.Parse(string)解析它们:

Dim todate As Int32 = Int32.Parse(todate_split)
Dim fromdate As Int32 = Int32.Parse(fromdate_split)

但我强烈建议将Option Strict设置为On作为visual studio中的默认设置并使用正确的类型。您将学到很多东西,并且您将编写更安全,更高效的代码。

由于您现在已经提到过,您想知道两个日期之间的天数差异,这些日期以30/12/2015格式表示为字符串。使用Date.Parse将其解析为DateTime,然后减去它们以获得具有TimeSpan属性的Days

类似的东西:

Dim fromdate As Date = Date.Parse("15/12/2015")
Dim todate As Date = Date.Parse("30/12/2015")
Dim timespan As TimeSpan = todate - fromdate
Dim days As Int32 = timespan.Days

如果您不知道格式是否有效,请使用Date.TryParse

答案 2 :(得分:0)

DateTime类可以为您完成所有事情:

Imports System
Imports System.Globalization

Module Module1
    Sub Main()
        Dim fromDate As DateTime = DateTime.ParseExact("28/07/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)
        Dim toDate As DateTime = DateTime.ParseExact("30/12/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)

        Dim timeSpan As TimeSpan = toDate.Subtract(fromDate)
        Console.WriteLine(timeSpan.Days)

        Console.ReadLine()
    End Sub
End Module

结果:

enter image description here

参考:

DateTime.ParseExact为您执行拆分 https://msdn.microsoft.com/en-us/library/w2sa9yss.aspx