wake-up-neo.com

Anfang und Ende des Vormonats in VB

Ich versuche, einen VB - Code zu erstellen, der den Anfang und das Ende des vorherigen Monats ermitteln wird.

Month(DateValue(Now))

die würde 3 zurückkehren. Von dort kann ich 1 wegnehmen, um 2 zu bedeuten, was Februar bedeutet. Das ist in Ordnung, aber was ist, wenn ich im Januar bin und ich dies wiederhole und es mir Null gibt - mein Code wird fehlschlagen. Weiß jemand, wie man die letzten Monate dann zum Anfangs- und Endtag bringt? 

Vielen Dank

9
Katana24

Der erste Tag des vorherigen Monats ist immer 1. Um den letzten Tag des vorherigen Monats zu erhalten, verwenden Sie 0 mit DateSerial:

''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 

Den ersten Tag können Sie wie folgt erhalten:

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

Siehe auch: Wie berechnet man den letzten Geschäftstag des Monats in VBScript

26
Fionnuala

Ich habe eine ähnliche Formel für den ersten und letzten Tag

Der erste Tag des Monats

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

Der Nulltag des nächsten Monats ist der letzte Tag des Monats

LastDay = DateSerial(Year(Date),Month(Date)+ 1,0) 
5
Quang le ba
firstDay = DateSerial(Year(DateAdd("m", -1, Now)), Month(DateAdd("m", -1, Now)), 1)
lastDay = DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))

Dies ist eine andere Möglichkeit, dies zu tun, aber ich denke, dass Remous Version sauberer aussieht.

1
MrBlue

Dies funktioniert zuverlässig für mich in meinem Haupt-U-Boot.

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))
1
Blisteragent

Versuchen Sie dies, um den Monat in Zahlenform zu erhalten:

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

Es gibt Ihnen 12 für Dezember.

In Ihrem Fall würden Sie also Month(DateAdd("m", -1, Now)) verwenden, um nur einen Monat abzuziehen.

0
Olle Sjögren
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

Verwendungszweck:

'Get End of Month of Previous Month - Pass today's date
EOM = GetEOMPrev(Date.Today)

'Get First of Month of Previous Month - Pass date just calculated
FOM = GetFOMPrev(EOM)
0
Russell

Um dem @Fionnuala Said etwas hinzuzufügen, können folgende Funktionen verwendet werden. Diese arbeiten sogar für Schaltjahre.

'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
0
Adarsh Madrecha

Versuche dies

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)
0