2014-07-15 34 views

Antwort

12

Angenommen, Sie die XML-String-Wert auf einen geeigneten DateTime Variable umwandeln möchten, hat Net viele Methoden dafür:

' a date value in the string format specified: 
Dim xmlDate As String = "07/15/2014 7:07:33 AM" 

' create a DATE variable from that string in a known format: 
Dim newDate As Date = DateTime.ParseExact(xmlDate, "MM/dd/yyyy h:mm:ss tt", 
      Globalization.CultureInfo.InvariantCulture) 

Sobald Sie eine aktuelle Datumsvariable haben, können Sie sie in jedem gewünschten Format anzeigen. so nicht den zugrunde liegenden Datumswert ändern tun, es ändert sich nur die Ausgabestil:

Dim myDt As DateTime = DateTime.Now 

Console.WriteLine(mydt.ToString("dd MMM yy HH:mm tt")) 
Console.WriteLine(mydt.ToString("MM/dd/yyyy h:mm:ss")) 

DateTime Typen sind ein Wert; Sie haben kein Format. Formate sind für, wie wir Daten an Menschen anzeigen (wie mit .ToString() oben) und wie wir sagen, DataTime das Muster zu erwarten, wenn Textdaten von Menschen in eine DateTime Variable zu analysieren.

Sie müssen vorsichtig sein, wenn Sie viele der VB-Funktionen verwenden. Einige erstellen überhaupt keine Datumstypen, nur neue String-Variablen. CDate kann besonders problematisch sein, wenn Datumsfolgen aus anderen Kulturen verwendet werden. Es nimmt an, dass die Zeichenfolge im aktuellen Kulturformat ist, was möglicherweise nicht der Fall ist. Dies kann dazu führen, dass 08/07/yyyy in 07/08/yyyy konvertiert wird.


Von den ursprünglichen Frage:
I am getting xml response date format string is "MM/dd/yyyy h:mm:ss a"

Von Kommentar:
xml returning date format is "7/8/2014 12:00:00 PM"

Das Format, in der Frage angegeben entspricht nicht das Beispiel im Kommentar geschrieben. Der xmlDate Text ist tatsächlich in M/d/yyyy Format, nicht MM/dd/yyyy! Unter Verwendung von ParseExact bedeutet, geben wir DateTime das genaue Format zu erwarten. Wenn das Format funktioniert nicht die tatsächlichen Zeichenfolge Muster übereinstimmen, wird es fehlschlagen:

Dim actualDate As Date 
Dim xmlTest As String = "7/8/2014 12:00:00 PM" 

actualDate = DateTime.ParseExact(xmlSource, "MM/dd/yyyy h:mm:ss tt", 
           Globalization.CultureInfo.InvariantCulture) 

Dies wird fehlschlagen, weil der Text nicht in MM/dd Format ist. Beachten Sie, dass "M/d"kann Daten aus Strings im Muster "MM/dd" analysieren, da einige Tage und Monate 2 Zeichen ("10/20 ...") sein werden. Aber das Gegenteil ist nicht wahr: "MM/dd" erfordert die führende 0. Geben Sie das richtige Format und Sie werden nicht ein Format Ausnahme erhalten:

actualDate = DateTime.ParseExact(xmlSource, "M/d/yyyy h:mm:ss tt", 
           Globalization.CultureInfo.InvariantCulture) 


ParseExact hier wahrscheinlich der beste Ansatz ist, weil es Sie importieren Daten aus anderen Ländern erscheint.Zur einfachen Datenvalidierung von Benutzereingaben reichen normalerweise Parse oder TryParse aus. Diese versuchen, den Text unter Verwendung eines der für die aktuelle Kultur definierten Formatmuster zu analysieren.

Einige cultures have well over 100. Dies bedeutet, dass der Benutzer Daten fast beliebig eingeben kann, und Ihr Code kann es immer noch in einen DateTime Typ analysieren/konvertieren.

Weitere Informationen finden Sie unter DateTime.ParseExact.

+2

+1 für die Verwendung von ParseExact und InvariantCulture. Gut gesagt rundum –

+0

hallo xml zurückkehrendes Datumsformat ist "7/8/2014 12:00:00 PM" über den Schritten ich folge seiner Rückkehr errorSystem.FormatException wurde durch Benutzercode HResult = -2146233033 Message = String nicht behandelt als gültige DateTime erkannt. Quelle = mscorlib – NarasimhaKolla

+0

siehe bearbeiten - Sie haben Ihr Problem in der ursprünglichen Frage nicht richtig beschrieben, so dass der Code nicht einfach ausgeschnitten und eingefügt werden kann. @NarasimhaKolla – Plutonix

0

Sie es wie folgt tun:

Dim time As DateTime = DateTime.Now 'Your date 
Dim format As String = "dd MMM yy HH:mm" 
Dim newdate = time.ToString(format) 
0
Dim theirTime = "07/15/2014 1:43:38 PM" 
Dim myFormat = "dd MMM yy HH:mm" 

Dim myTime = Format(CDate(theirTime), myFormat) 
1
Dim dat As Date 
Dim dd, mm, yyyy As String 

DateTimePicker1.Value = DateTimePicker1.Value.AddDays(1) 

If Len(DateTimePicker1.Value.Day) = 2 Then 
    dd = DateTimePicker1.Value.Day 
Else 
    dd = "0" & DateTimePicker1.Value.Day 
End If 

If Len(DateTimePicker1.Value.Month) = 2 Then 
    mm = DateTimePicker1.Value.Month 
Else 
    mm = "0" & DateTimePicker1.Value.Month 
End If 

yyyy = DateTimePicker1.Value.Year 

dat = dd & "/" & mm & "/" & yyyy 
Verwandte Themen