2017-02-15 7 views
0

Ich habe dies 2017-02-13T00: 00: 00 + 08: 00 Datetime als Zeichenfolge in XML-Datei. Ich möchte es in yyyyMMdd als Ganzzahl konvertieren.Convert DateTime String zu Integer

ist, was ich versucht habe:

Integer.Parse(myRow("ENT_DATE").ToString("yyyy") & myRow("ENT_DT").ToString("MM") & myRow("ENT_DT").ToString("dd")) 

Aber es gibt einen Fehler zurück. Conversion from string "yyyy" to type 'Integer' is not valid.

myRow("ENT_DATE") siehe 2017-02-13T00:00:00+08:00

Antwort

2

Das Problem ist, dass die Item Eigenschaft des DataRow gibt einen Object Referenz, so dass Sie nicht die richtige ToString Methode aufrufen. Dieser Code sollte sein:

CInt(CDate(myRow("ENT_DATE")).ToString("yyyyMMdd")) 

Sie werfen den Feldwert als Typ Date zuerst, dann sind Sie die richtige Date.ToString Methode aufrufen.

+0

Das gibt mir '20170212' und nicht' 20170213', wahrscheinlich weil CDate die Zeitzone (+8) berücksichtigt und ich in einer anderen Zeitzone (+1) bin. Darf kein Problem für OP sein, aber immer noch etwas zu berücksichtigen. –

+0

Danke viel .. gespeichert mein Tag ... – FullStack

+0

@PeterB ist das Datum wird entsprechend der Zeitzone geändert werden .. ?? – FullStack

0

Die Verwendung von .ToString("yyyy") funktioniert nur mit einem DateTime-Wert und nicht mit einer Zeichenfolge.

Der einfachste Weg ist wahrscheinlich nur die Ziffern nehmen, die Sie mit Links benötigen() und Ersetzen(), und dann diejenigen in einen ganzzahligen Wert konvertieren, wie folgt aus:

CInt(Left(myRow("ENT_DATE"), 10).Replace("-", "")) 

Dies erzeugt 20170213 für die gegebene Eingabe, unabhängig davon, welche Zeitzone für die Anwendung eingestellt ist.

+0

Hmmm ... Ich nahm an, dass der Wert in der 'DataTable' eigentlich eine' DateTime' war, die aus dem XML deserialisiert wurde. Wenn das der Fall ist, würde Ihre Lösung nicht funktionieren, aber vielleicht liege ich falsch und es ist tatsächlich eine "Zeichenfolge". Ich nehme an, dass das OP "Option Strict Off" haben muss. Wenn es also eine 'DateTime' wäre, dann hätte dieser Anruf in der späten Zeit wahrscheinlich an erster Stelle funktioniert. – jmcilhinney