2016-04-05 12 views
0

Lässt sagen, ich habe diese Zeichenfolge mit diesem Datum. "02-01-2015"Konvertieren String in das Datum mit unabhängigem Format

Die Zeichenfolge wie folgt aufgebaut: dd-MM-yyyy, was bedeutet, dass dieses Datum der 2. Januar 2015 ist. Ich muss diese Zeichenfolge als Datum in meine SQL-Datenbank einfügen. Wie kann ich der Datenbank mitteilen, dass die erste Ganzzahl der Tag und nicht der Monat usw. ist? Das habe ich bisher versucht.

Dim dateTime As String = "02-01-2015" 
    Dim dt As DateTime = Convert.ToDateTime(dateTime) 
    Dim format As String = "yyyy-MM-dd" 
    Dim str As String = dt.ToString(format) 

    MsgBox(str) 

Jetzt beginnt das eigentliche Problem. Ich lebe in Dänemark, und das Standardzeitformat meines Computers unterscheidet sich vom englischen Zeitformat. Wenn ich diesen Code auf meinem PC mit Standard-Time-Format auf meinem System laufen bekomme ich die msg:

2015-02-01 

Aber wenn ich mein System-Zeitformat auf Englisch zu ändern, ich diese msgbox erhalten:

2015-01-02 

Wie mache ich das unabhängig vom Systemzeitformat? Kann ich die Zeichenkette in Jahr, Monat und Tag aufteilen oder wird bei der Konvertierung immer das englische Zeitformat verwendet? Ich weiß, das mag für dich wie ein einfaches Problem erscheinen, aber es fordert mich seit einiger Zeit heraus. Ich freue mich auf Ihre Antwort!

+2

Wenn es ein Datum und die Spalte Datum db ist, ein Datum übergeben und Sie müssen nicht es über das Datum, etwas zu sagen. Die NET db Provider sind gut geeignet, um NET Dates zu handhaben. Datumsangaben haben kein Format und Sie können keine für sie erzwingen. Formate sind genau so, wie sie den Menschen angezeigt werden. So sehen Sie es unterschiedlich abhängig von der aktiven Kultur. – Plutonix

+0

Ja, aber das Problem ist, wenn ich diese Daten in meine Datenbank analysiere. Ich kann die Daten mischen, wenn ich das Programm auf einem Computer mit einer anderen aktiven Kultur führe. Ich habe es gerade ausprobiert und erhalte zwei verschiedene Daten in meiner Datenbank. Einer sagt 2015-01-02 und ein anderer sagt 2015-02-01, aber sie sind von der gleichen Zeichenfolge mit dem gleichen Code konvertiert, nur mit 2 verschiedenen Computerformaten. – TobiasKnudsen

+0

Nr. 'Jan 2' in Großbritannien ist' Jan 2' in Demark und 'Jan 2' in den USA. Das Problem, das Sie sehen, ist weiter stromaufwärts. Wenn die Datenbankspalte Date ist, werden die Quelldaten gemäß Ihrer letzten Frage in die falsche Kultur geparst. Wenn der DB-Spaltentyp String ist, haben Sie sich möglicherweise selbst in den Fuß geschossen. – Plutonix

Antwort

0

dachte ich die Lösung aus:

' a date value in the string format specified: 
     Dim xmlDate As String = "02-01-2015" 

     ' create a DATE variable from that string in a known format: 
     Dim newDate As Date = DateTime.ParseExact(xmlDate, "dd-MM-yyyy", Globalization.CultureInfo.InvariantCulture) 
     MsgBox(newDate.ToString("yyyy-MM-dd")) 
Verwandte Themen