vb.net 中不包含年份的日期和月份比较

Day and month comparison without inluding year in vb.net

给出以下信息

orderdate=05/01/2016
startday=24
startmonth=08
endday=2
endmonth=10

基本上我们必须比较销售期 24 august10 october 的订单日期。

24 august10 october 期间之外的日期将是非销售期。

因此对于任何给定的订单日期,我们必须计算它是属于销售期还是​​非销售期。问题是我们没有提供年份只有开始日、开始月、结束日和结束月。

还可以说,如果我们使用日期时间,那么 start date=24/08/2016enddate=2/10/2016。需要当年,但通常是错误的。

它应该需要 startdate=24/08/2015(因为非销售期将从 2015 年 10 月 3 日开始到 2016 年 8 月 23 日,之后销售期将开始并且 enddate=2/10/2016(我们得到正确)。

请告诉我是否可以只比较月份和日期而不比较年份来比较订单日期与给定的开始日期、开始月份、结束日期和结束月份。

我想你需要的是以下内容。它根据提供的月份和日期创建一个日期,然后调整它们以找到按时间顺序正确的历史日期:

    Private Function IsOrderInSalesPeriod(orderDate As Date, startMonth As Integer, startDay As Integer, endMonth As Integer, endDay As Integer) As Boolean

    Dim salesStartDate As New Date(DateTime.Now.Year, startMonth, startDay)
    Dim salesEndDate As New Date(DateTime.Now.Year, endMonth, endDay)
    'if the sales period is in the future it must be a year ahead
    If salesStartDate > DateTime.Now Then salesStartDate = salesStartDate.AddYears(-1)
    If salesEndDate > DateTime.Now Then salesEndDate = salesEndDate.AddYears(-1)
    'check that the start is before the end
    If salesStartDate > salesEndDate Then salesStartDate = salesStartDate.AddYears(-1)

    If orderDate >= salesStartDate AndAlso orderDate <= salesEndDate Then
        Return True
    Else
        Return False
    End If
End Function

这可能有用,但你的问题不是很清楚。

Private Function InSalesPeriod(OrderDate As DateTime) As Boolean
    Dim salesStrt As New DateTime(OrderDate.Year, 8, 24)
    Dim salesEnd As New DateTime(OrderDate.Year, 10, 10)

    If OrderDate >= salesStrt AndAlso OrderDate <= salesEnd Then
        Return True
    Else
        Return False
    End If
End Function

这会检查订单日期是否在为订单年份指定的日期之间。