Ay hesaplaması yapmak için tarih türüne erişmek için erişim veritabanından alınan tarih dizesini dönüştürmeye çalışıyorum. Sahip olduğum sorun, alınan dize türü değişkenini tarih türüne dönüştüremiyor. Convert.ToDateTime, DateTime.ParseExact() gibi birkaç yöntemi denedim hala başarısız olurGörsel temelde dize tarih türünü dönüştürün
Kodum, permitEndDate sütununu dize olarak alabiliyor ancak tarih türüne dönüştüremiyor çünkü neden geçmem gerekiyor Benim işlevime.
Lütfen yardım edin çünkü VB'de yeni ve sorularımı okuyanlara çok teşekkürler.
Kodum:
For i As Integer = 0 To ds.Tables("lecturer").Rows.Count - 1
TextBox1.AppendText(ds.Tables("lecturer").Rows(i).Item(16) & vbCrLf)
'convert string to date type
Dim getDate As String = ds.Tables("lecturer").Rows(i).Item(16)
TextBox1.AppendText("Parse getDate: " & getDate & vbCrLf)
Dim expDate As DateTime = DateTime.ParseExact(getDate, "dd/MM/yyyy", CultureInfo.InvariantCulture)
TextBox1.AppendText("Parse expDate with date type: " & expDate & vbCrLf)
' Dim permitEndDate As String = ds.Tables("lecturer").Rows(i).Item(16)
'expDate = Convert.ToDateTime(permitEndDate)
' TextBox1.AppendText("Difference in month: " & CalculateMonth(expDate) & vbCrLf)
Next
fonksiyonu:
'calculation of months
Function CalculateMonth(ByVal endDate As Date) As Integer
Dim result As Integer
'1.get today date
Dim currentDate As Date = Date.Now.ToString("dd/MM/yyyy")
'calculation formula
result = DateDiff(DateInterval.Month, currentDate, endDate)
Return result
End Function
Yani, benim hata "Dize geçerli bir DateTime olarak tanınmadı" çizgidir: Tarih = Date.ParseExact olarak Dim expDate (getDate, "gg/aa/yyyy", CultureInfo.InvariantCulture)
İlk olarak, veritabanındaki veriler neden tarih temsil ediyorsa metin olarak kullanılır? Erişim bir "Tarih/Saat" veri tipine sahip, bu yüzden neden kullanmıyorsunuz? – jmcilhinney
Veri tabanı üzerinde kontrolünüz olmadığını ve verileri metin olarak kabul ettiğinizi varsayarsak, bu metin veritabanında hangi formattır ve null olabilir mi? – jmcilhinney
Ayrıca, bu çılgın: 'Dim currentDate As Date = Date.Now.ToString (" dd/MM/yyyy ")'. Neden "Tarih" i bir "String" haline dönüştürdünüz ve dolaylı olarak bir "Tarih" e dönüştürülmesini beklerdiniz? İstediğiniz şey bugünün tarihiyle sıfırlanan zaman ise o zaman "Date.Today" kullanmalısınız. – jmcilhinney