Frage F # - Daten analysieren


Sehr grundlegende Frage bezüglich des Parsingdatums in F #. Ich bin sehr neu in F # und .NET, also bitte bitte mit mir.

Mein Datum hat das Format yyyyMMDD mögen 20100503.

Wie analysiere ich das in ein DateTime Tippen Sie F # ein.

Ich habe es versucht System.DateTime.Parse("20100503"); aber bekomme einen Fehler.

Wie übergebe ich eine Formatzeichenfolge an die Parse-Methode?

ANTWORT ist - Vielen Dank für die Antworten.

let d = System.DateTime.ParseExact("20100503", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);

5
2017-11-11 18:47


Ursprung


Antworten:


Sie sollten in der Lage sein, eine benutzerdefinierte Formatzeichenfolge zu verwenden. Versuche dies:

System.DateTime.ParseExact("20100503", "yyyymmdd", null);;

Sehen http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx für mehr Details.


8
2017-11-11 19:15



DateTime.ParseExact("20100503", "yyyyMMdd", CultureInfo.CurrentCulture)

Verwenden Sie die ParseExact-Methode, und verwenden Sie Kleinbuchstabe d anstelle von Oben.


3
2017-11-11 19:16



Ich antwortete a ähnliche Frage heute Morgen. Ich habe F # nicht verwendet, aber wenn Sie Zugriff auf DateTime.ParseExact haben, kann meine Antwort Ihnen helfen.

Sie könnten auch TryParseExact in Erwägung ziehen, damit Sie einen Fehler basierend auf der Funktion, die false zurückgibt, abfangen können, anstatt ihn in einen try catch zu legen:

//Using code example from my previous answer...
string s = "100714 0700"; 
DateTime d;
if (!DateTime.TryParseExact(s, "yyMMdd hhmm", CultureInfo.InvariantCulture, out d))
{
  // Whoops!  Something is wrong with the date.
}


//In your case
string s = "20100503"; 
DateTime d;
if (!DateTime.TryParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture, out d))
{
  // Whoops!  Something is wrong with the date.
}

2
2017-11-11 19:14



Das Format wird nicht akzeptiert.

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

Möglicherweise müssen Sie die Zeichenfolge vor dem Parsen manipulieren.

Sie sind jedoch auf dem richtigen Weg.


0
2017-11-11 19:06



Sie müssen die Überladung von DateTime.Parse verwenden, die einen IFormatProvider benötigt. Der IFormatProvider, den Sie angeben, muss dieses Format verstehen.

Sie können dies tun, indem Sie ein DateTimeFormatInfo-Objekt mit dem richtigen Format für die Datumszeichenfolge erstellen, die Sie analysieren möchten.

Dies ist wahrscheinlich eine Menge Arbeit für das, was Sie tun. Wenn Sie die Zeichenfolge zuerst etwas reorganisieren können (am wahrscheinlichsten zu einer Datumszeichenfolge mit Trennzeichen), werden Sie wahrscheinlich besser dran sein.


0
2017-11-11 19:11