2017-02-04 5 views
1

Ich versuche, die Anzahl der Tage zwischen zwei Daten und ob es ein voller Monat ist oder nicht.VB.net Work out Anzahl der Tage zwischen zwei Daten

Im Moment habe ich diesen Code:

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) 

Und dann versuche ich zu arbeiten, wenn es einen ganzen Monat ist:

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 

Aber das erweist sich nicht, weil es im Februar arbeiten nur sieht die num_days als 27

Gibt es eine Möglichkeit, dass ich die richtige Anzahl von Tagen zwischen den beiden Daten einschließlich der Daten selbst volle Tage bekommen kann?

Und wie kann ich überprüfen, ob es sich um eine vollständige, korrekte Monat ist oder nicht

UPDATE

Der Zweck ist, für ein Abrechnungssystem so Dateien in eine Datenbank eingelesen werden mit von und zu Daten, dann muss es die Preisgestaltung von diesen Daten erarbeiten.

So ein Produkt hat einen bestimmten Preis, sondern vor allem müssen wir, ob arbeiten, für einen Teil eines Monats oder einen ganzen Monat in Rechnung stellen (im Grunde Teil des Produktpreises oder den vollen Preis)

So dieser 'Full Monat' Datumsbereich Beispiele werden den vollen Preis

voller Monat in Rechnung stellen:

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

Während dieser Zeitraum für ‚Teil Monat‘ wird nur Rechnung für die Anzahl der Tage zwischen der von und bis heute (1 Tag)

Teil Monat

  • 15/01/2017 - 31/01/2017
+0

Haben Sie den Abschnitt "RELATED" auf der rechten Seite bemerkt? Es gibt viele ähnliche Fragen (wenn nicht ein direktes Duplikat). Keiner von ihnen ist gut für dich? – Steve

+0

nein ich sehe diesen Abschnitt nicht? – charlie

+0

Ich habe ein paar andere Fragen überprüft, finde aber nicht die gleiche wie meine. Ich möchte nicht nur die Anzahl der Tage ZWISCHEN den 2 Daten finden, sondern auch die Daten angeben. zum Beispiel, wenn sein 01/01/2017 bis 04/01/2017 ich sollte 4 und nicht 3 – charlie

Antwort

1

Dies würde bekommen, was Sie spezi fied:

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

Die beiden Zustände sind nicht wirklich die gleiche Sache in meinem Verständnis.
Die zweite Überprüfung ist ein Monat und ein Tag. (Der erste würde passen ‚1. Januar - 31. Januar‘, die zweite ‚Jan 01 bis 01 Februar‘.)

Beachten Sie auch, dass weder Kontrolle würde passen "Ende der Monate wie 2016-02-29 - 2016-03-31 - Sie müssen Definieren Sie wirklich, was Sie in diesen Fällen erreichen möchten.

+0

Ich habe das gerade erst versucht, bevor du es gepostet hast :) das scheint zu funktionieren, obwohl ich in den run hineinlaufe etwas anderes. wenn die Daten 18/01/2017 - 18/02/2017 sind, sehen sie, dass sie 32 Tage lang sind und daher ihren Teil eines Monats und nicht einen vollen Monat denken, weil 32 <> 31 (31 = Tage im Monat) – charlie

+0

I denke ich muss <= eher als – charlie

+0

was denkst du? – charlie

Verwandte Themen