我正在尝试在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日
我希望得到两个日期(天)之间的差异
答案 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_split
和fromdate_split
是字符串,在给定错误消息的情况下似乎是这种情况,则无法减去它们。我怀疑您有Option Strict
到Off
,字符串为"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
结果:
参考:
DateTime.ParseExact为您执行拆分 https://msdn.microsoft.com/en-us/library/w2sa9yss.aspx