我试图创建一些VB代码来获取上个月的开始和结束。 林能当月这仅仅是:如何在VB中获取上个月的开始和结束
Month(DateValue(Now))
这将返回3.从那里我可以带走1给我2月份的含义。这很好,但是当我在一月份进行重复操作时,如何让它变为零 - 我的代码将会失败。任何人都知道如何获得前几个月的开始和结束日呢?
感谢
我试图创建一些VB代码来获取上个月的开始和结束。 林能当月这仅仅是:如何在VB中获取上个月的开始和结束
Month(DateValue(Now))
这将返回3.从那里我可以带走1给我2月份的含义。这很好,但是当我在一月份进行重复操作时,如何让它变为零 - 我的代码将会失败。任何人都知道如何获得前几个月的开始和结束日呢?
感谢
前一个月的第一天总是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
试试这个得到月份数形式:
Month(DateAdd("m", -3, Now))
它会给你12
十二月。
所以在你的情况下,你会使用Month(DateAdd("m", -1, Now))
只需一个月。
这是如何得到上个月的开始和结束_day_? – user66001 2017-09-04 21:56:53
firstDay = DateSerial(Year(DateAdd("m", -1, Now)), Month(DateAdd("m", -1, Now)), 1)
lastDay = DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))
这是另一种方式来做到这一点,但余吨hink Remou的版本看起来更干净。
我有相似的配方和最后一天
在第一个月的日
FirstDay = DateSerial(Year(Date),Month(Date),1)
下个月的零日是本月的最后一天
LastDay = DateSerial(Year(Date),Month(Date)+ 1,0)
这项工作将在12月份进行吗? – BGilman 2018-02-22 21:06:58
只需要添加一些什么@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
你好Remou只是再次检查你的代码,并有另一个问题 - 为什么当我这样做:LastDay = DateSerial(年(日期),月(日期) - 1,1 - 1)我得到31/01/2013年而不是28/02/2013?当然,本月(日期) - 1返回2暗示2月 – Katana24 2013-03-20 16:16:07
你有月-2,一个月(日期)-1,一天0。本月的第0天是上个月的最后一天,所以2月是dateserial(2013,3,0),而不是你所显示的。 – Fionnuala 2013-03-20 16:21:42
噢好吧 - 这就是decieving。谢谢 – Katana24 2013-03-20 16:24:26