[C#] DateTime een datum converteren.

Pagina: 1
Acties:
  • 1.922 views sinds 30-01-2008
  • Reageer

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 20:10

aex351

I am the one

Topicstarter
Ik heb een paar formaten datums welk ik naar een MySQL formaat TIMESTAMP wil converteren. Nu probeer in uit de onderstaande code blok 1e comment regel die datum te parsen maar dat wilt niet lukken.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
// Thu, 14 Jun 2007 00:54:30 +0000 (UTC)
// Thu, 14 Jun 2007 02:55:26 +0200
// Thu, 14 Jun 2007 02:38:40 GMT
// 14 Jun 2007 02:38:40 GMT

//datum in de bovenstaande formaten
Datum = Datum.Replace(",", "").Replace("(", "").Replace(")", "");

DateTime DateConvert = new DateTime();

//Hier gaat het fout.
DateConvert = DateTime.ParseExact(Datum, "ddd dd MMM yyyy HH ':'mm':'ss K 'UTC'", null);


Nu krijg ik deze foutmelding "De tekenreeks is niet als geldige DateTime herkend." . Dit betekend volgens mij dat de variabel Datum niet klopt. Maar ik zie niet waarom deze niet zou kloppen.

< dit stukje webruimte is te huur >


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:24
Sowieso staat er een spatie teveel tussen HH en ':'. Is het daarnaast niet zo dat omdat je verschillende formaten gebruikt je verschillende formaten moet opgeven in je functie?

En geef eens een CultureInfo object mee waar je nu een null meegeeft... :).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Dennis schreef op woensdag 20 juni 2007 @ 18:25:
En geef eens een CultureInfo object mee waar je nu een null meegeeft... :).
Waarschijnlijk iets als de InvariantCulture :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • aex351
  • Registratie: Juni 2005
  • Laatst online: 20:10

aex351

I am the one

Topicstarter
Dennis schreef op woensdag 20 juni 2007 @ 18:25:
...
verschillende formaten gebruikt je verschillende formaten moet opgeven in je functie?
..
Dat heb ik ook aangegeven in mijn eerste post.

C#:
1
2
3
4
5
6
//Thu, 14 Jun 2007 01:54:42 +0000 (werkt niet)
//Wed, 13 Jun 2007 20:53:47 -0500 (werkt wel)
//Thu, 14 Jun 2007 03:55:37 +0200 (werkt wel)

IFormatProvider culture = new System.Globalization.CultureInfo("en-US", true);
 DateConvert = DateTime.ParseExact(Datum, "ddd, dd MMM yyyy HH':'mm':'ss K", culture);


Waarom werkt "Thu, 14 Jun 2007 01:54:42 +0000" niet?

[ Voor 24% gewijzigd door aex351 op 20-06-2007 19:10 ]

< dit stukje webruimte is te huur >


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:24
Uit jouw 1e bericht werd mij niet duidelijk dat sommige, door jou geheel niet genoemde andere formaten, wél werken [met deze formatstring].

Verder zou ik denken naar aanleiding van je laatste bericht: hé, hij doet het altijd wel maar niet bij +0000. Misschien is het wel ongebruikelijk om +0000 te vermelden (dat voegt immers niets toe), maar ik ben te slecht bekend met de internationale formaten om daar iets zinnigs over te zeggen.

Nog even iets aanvullends:
Het blijkt dat het RFC2822 formaat, het datumformaat dat jij wilt parsen, vaker problemen oplevert met .net. Dit formaat wordt veel gebruikt voor bijvoorbeeld e-mailverkeer. In je eerste post heb je ook een formaat met een UTC formaat aan het eind en ik weet niet of je die al hebt opgelost, maar voor dat formaat is standaard een methode beschikbaar in .net (RFC1123).

Interessante pagina's:
http://www.w3schools.com/php/php_ref_date.asp -> onderaan verschillende RFC formaten.
http://msdn2.microsoft.com/en-us/library/az4se3k1.aspx -> standaard formaten in .net.

[ Voor 40% gewijzigd door Dennis op 21-06-2007 08:10 ]