Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
welche Alternative schlägst du vor, das ist bisher die einzige bis auf Schaltjahre funktionierende Lösung.Wieso benutzt du DayOfYear?
Ist doch klar, dass damit nur Murks raus kommt
Sub Irgendwas()
Dim StartDate As Date
Dim EndDate As Date
StartDate = CDate("28.02.2020")
EndDate = CDate("01.03.2020")
Debug.Print "StartDate: " & CLng(StartDate)
Debug.Print "EndDate: " & CLng(EndDate)
Debug.Print "DateDiff-Funktion: " & DateDiff("d", StartDate, EndDate)
Debug.Print "Subtraktion: " & CLng(EndDate) - CLng(StartDate)
End Sub
StartDate: 43889
EndDate: 43891
DateDiff-Funktion: 2
Subtraktion: 2
Alle Lösungen funktionierten leider nur innerhalb eines Jahres, also wenn das Anfangsdatum im Jahr 2020 liegt und das Enddatum ebenfalls in 2020 liegt, Probleme gibt es erst wenn der Anfang in 2020 liegt und das Ende in 2021.Entweder Spykes Lösung (und "geht nicht" ist keine Fehlermeldung, hier dann weiter forschen, warum es nicht geht), oder meine "Krücken"-Lösung (entweder über ticks-Eigenschaft) oder hart in Integer bzw. Double casten, und voneinander subtrahieren.
Ich kann mir nicht vorstellen, dass eine "moderne" Sprache wie C# gegenüber vb6/vba so im Nachteil wäre.
In dem einen Link den ich eingehängt habe wird sogar erwähnt den VB.NET-Namespace einzubinden, und deren DateDiff-Funktion zu benutzen
EDIT: Hier ein Beispiel in VBA
Ich habe absichtlich ein Schaltjahr genommen, damit du siehst, dass SchaltJahr automatisch berücksichtigt wird.
Visual Basic:Sub Irgendwas() Dim StartDate As Date Dim EndDate As Date StartDate = CDate("28.02.2020") EndDate = CDate("01.03.2020") Debug.Print "StartDate: " & CLng(StartDate) Debug.Print "EndDate: " & CLng(EndDate) Debug.Print "DateDiff-Funktion: " & DateDiff("d", StartDate, EndDate) Debug.Print "Subtraktion: " & CLng(EndDate) - CLng(StartDate) End Sub
Ergibt:
Code:StartDate: 43889 EndDate: 43891 DateDiff-Funktion: 2 Subtraktion: 2
EDIT2: Falls du es warum auch immer auf deine Art lösen willst:
Hiermit kannst du herausfinden, ob ein Jahr ein Schaltjahr ist
DateTime.IsLeapYear() Method in C#
Try
dbcmd = New OleDbCommand("SELECT * FROM tblfahrzeuge", conn)
Dim DbReader As OleDbDataReader
DbReader = dbcmd.ExecuteReader
While DbReader.Read
CboxFahrzeug.Items.Add(DbReader("KFZ_NAME").ToString)
End While
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Private Sub Cboxcarname_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboxFahrzeug.SelectedIndexChanged
conn.Open()
Try
dbcmd = New OleDbCommand("SELECT * FROM tblfahrzeuge WHERE KFZ_NAME ='" & CboxFahrzeug.Text & "'", conn)
Dim DbReader As OleDbDataReader
DbReader = dbcmd.ExecuteReader
While DbReader.Read
Txtfahrzeugkennzeichen.Text = DbReader("KFZ_KENNZEICHEN")
TxtTagesmiete.Text = DbReader("MIETE_PRO_TAG")
TxtFahrzeugNummer.Text = DbReader("KFZ_ID")
Txtkilometer.Text = DbReader("KFZ_KILOMETER")
TxtTankinhalt.Text = DbReader("KFZ_TANK")
TxtStandort.Text = DbReader("KFZ_STANDORT")
End While
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
conn.Close()
End Sub
dbcmd = New OleDbCommand("SELECT * FROM tblfahrzeuge WHERE KFZ_NAME ='" & CboxFahrzeug.Text & "'" AND NOT zwischen Picker1 und Picker3", conn)
Private Sub DateTimePicker3_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker3.ValueChanged
Dim days As New Integer
Dim days2 As New Integer
Dim days3 As New Integer
Dim JahresZahl As New Integer
days = DateTimePicker3.Value.DayOfYear - DateTimePicker1.Value.DayOfYear
days2 = DateTimePicker1.Value.DayOfYear
days3 = DateTimePicker3.Value.DayOfYear
JahresZahl = DateTimePicker1.Value.Year
TxtAnzahlTage.Text = days.ToString()
If Val(TxtAnzahlTage.Text) < 0 Then
TxtAnzahlTage.Text = (365 - days2.ToString() + days3.ToString())
End If
Try
If (JahresZahl / 4 = 0 & JahresZahl / 100 = 0) Then ' prüft auf Schaltjahr
TxtAnzahlTage.Text = (TxtAnzahlTage.Text + 1) ' ist Schaltjahr wird ein Tag dazu gezählt
End If
Catch ex As Exception
End Try
End Sub
Danke der Hinweis ist gut werde das mal angehen mit NOT BETWEENSuch mal nach SQL NOT BETWEEN
btw: Einen SQL-String wie oben zusammenzubauen ist "bad practice".
Lieber Parameter benutzen, in welchem Falle du dann auch den ganzen Schmarrn mit Anführungszeichen für Strings usw. komplett weglassen kannst, weil es die Engine für dich dann macht.
Wie gesagt: Bin kein .NET-ler, aber ich glaube mich daran zu erinnern, dass sowas wie StringBuilder angeboten wird in .NET
Ich kann mir nicht vorstellen, dass eine "moderne" Sprache wie C# gegenüber vb6/vba so im Nachteil wäre.
In dem einen Link den ich eingehängt habe wird sogar erwähnt den VB.NET-Namespace einzubinden, und deren DateDiff-Funktion zu benutzen
TxtAnzahlTage.Text = (365 - days2.ToString() + days3.ToString())
TxtAnzahlTage.Text = (365 - days2 + days3).ToString()
Wie kommst du denn da drauf?Geht unter C# auch relativ einfach, was mich hier verwundert.
Hier wird ja mit VB.Net programmiert.
*schnipp*
Am Quellcode, der VB.Net Syntax ;-)Wie kommst du denn da drauf?
Im Subject des Threads sehe ich eindeutig ein "c#"