VB.net计算出两个日期之间的天数

时间:2017-02-04 11:01:46

标签: vb.net

我正在尝试计算两个日期之间的天数以及是否整整一个月。

我目前有这段代码:

    Dim fromdate As Date
    Dim todate As Date
    Dim timespan
    Dim num_days As String
    Dim month As DateTime

    fromdate = Date.Parse("01/01/2017")
    todate = Date.Parse("31/01/2017")
    TimeSpan = todate - fromdate
    num_days = TimeSpan.Days

    MsgBox(num_days)

然后我试着弄清楚它是否整整一个月:

month = todate
If (month.Month = "02" And num_days = "28") Or num_days = "29" Or num_days = "30" Or num_days = "31" Or num_days = "0" Then
    'do code here
Else
    'do code here
End If

但事实证明这在二月份没有用,因为它只看到num_days为27

有没有办法可以在两个日期之间获得正确的天数,包括日期本身为完整日期?

我如何检查它是否是一个完整,正确的月份

更新

这样做的目的是为了一个计费系统,所以文件被读入带有from和to日期的数据库,然后它需要计算这些日期的定价。

因此,产品具有特定价格,但首先我们需要确定是否为部分月份或整月收费(基本上是产品价格的一部分或全价)

因此,这些“完整月份”日期范围示例将按全价计算

整月:

  • 01/01/2017 - 31/01/2017
  • 25/01/2017 - 25/01/2017
  • 18/01/2017 - 18/02/2017
  • 10/01/2017 - 10/01/2018

然而,“零件月”的这个日期范围只会计算从到目前为止(+1天)之间的天数

部分月

  • 15/01/2017 - 31/01/2017

1 个答案:

答案 0 :(得分:2)

这将得到您指定的内容:

Dim IsOneFullMonth = (d1.Day = 1 And d2 = d1.AddMonths(1).AddDays(-1))
Dim IsOnMonthLater = (d2 = d1.AddMonths(1))

这两个国家在我的理解中并不是一回事 第二次检查是一个月和一天。 (第一个匹配'1月1日 - 1月31日',第2个匹配'1月1日 - 2月01'。)

另外请注意,这两项检查都不会与2016-02-29 - 2016-03-31的“月末”相匹配 - 您必须真正定义您希望在这些情况下实现的目标。