2016-04-12 22 views
0

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)

+0

İ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

+0

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

+0

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

cevap

1

Sana düşünüyorum

(ds.Tables("lecturer").Rows(i).Item(16)) 

tabloda sütun değerini kontrol edin bir tarihe dönüştürülecek eşleşmeyen bir dize kaydedildi.

İlgili konular