如何在VB中获得上个月的开始和结束

时间:2013-03-15 10:31:41

标签: vba ms-access access-vba

我试图创建一些VB代码,它将获得上个月的开始和结束。 我能够在当月只是:

Month(DateValue(Now))

将返回3.从那里我可以带走1给我2意思二月。这很好,但是当我在1月份,我重复这个并且它给我零 - 我的代码将失败。谁知道如何获得前几个月的开始和结束日呢?

由于

8 个答案:

答案 0 :(得分:27)

上个月的第一天始终为1,要获取上个月的最后一天,请使用DateSerial为0:

''Today is 20/03/2013 in dd/mm/yyyy
DateSerial(Year(Date),Month(Date),0) = 28/02/2013 
DateSerial(Year(Date),1,0) = 31/12/2012 

你可以像上面那样从上面开始第一天:

LastDay = DateSerial(Year(Date),Month(Date),0)
FirstDay = LastDay-Day(LastDay)+1

另请参阅:How to caculate last business day of month in VBScript

答案 1 :(得分:5)

我有第一天和最后一天的类似公式

本月的第一天

FirstDay = DateSerial(Year(Date),Month(Date),1)

下个月的零日是该月的最后一天

LastDay = DateSerial(Year(Date),Month(Date)+ 1,0) 

答案 2 :(得分:1)

firstDay = DateSerial(Year(DateAdd("m", -1, Now)), Month(DateAdd("m", -1, Now)), 1)
lastDay = DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))

这是另一种方法,但我认为Remou的版本看起来更干净。

答案 3 :(得分:1)

这对于我的主要子对象来说确实可靠。

Dim defDate1 As Date, defDate2 As Date

'** Set default date range to previous month
defDate1 = CDate(Month(Now) & "/1/" & Year(Now))
defDate1 = DateAdd("m", -1, defDate1)
defDate2 = DateAdd("d", -1, DateAdd("m", 1, defDate1))

答案 4 :(得分:0)

尝试以数字形式获取月份:

Month(DateAdd("m", -3, Now))

它将在12月为您提供12

因此,在您的情况下,您可以使用Month(DateAdd("m", -1, Now))来减去一个月。

答案 5 :(得分:0)

只是为了添加@Fionnuala所说的内容,可以使用以下功能。这些甚至适用于闰年。

'If you pass #2016/20/01# you get #2016/31/01#
Public Function GetLastDate(tempDate As Date) As Date
    GetLastDate = DateSerial(Year(tempDate), Month(tempDate) + 1, 0)
End Function

'If you pass #2016/20/01# you get 31
Public Function GetLastDay(tempDate As Date) As Integer
    GetLastDay = Day(DateSerial(Year(tempDate), Month(tempDate) + 1, 0))
End Function

答案 6 :(得分:0)

<div class="container">
    <div class="row">
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
    </div>
    <div class="row">
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
    </div>
    <div class="row">
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
      <div class="content">Content</div>
    </div>
</div>

用法:

Public Shared Function GetFOMPrev(ByVal tdate As Date) As Date
    Return tdate.AddDays(-(tdate.Day - 1))
End Function

Public Shared Function GetEOMPrev(ByVal tdate As Date) As Date
    Return tdate.AddDays(-tdate.Day)
End Function

答案 7 :(得分:0)

尝试一下

First_Day_Of_Previous_Month = New Date(Today.Year, Today.Month, 1).AddMonths(-1)

Last_Day_Of_Previous_Month = New Date(Today.Year, Today.Month, 1).AddDays(-1)