[C#] Onverklaarbare fout DateTime.Parse()

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

  • xces
  • Registratie: Juli 2001
  • Laatst online: 15:26

xces

To got or not to got..

Topicstarter
Hallo,

Onderstaande code geeft een FormatException. We hebben hier werkelijkwaar van alles geprobeerd. Ook al geven we een datum (hard coded) in, dan nog kan hij de datum niet parsen. Het aanmaken van de cultureinfo (en deze instellen op de currentthread, of zelfs meegeven aan de DateTime.parse() functie heeft ook geen enkel effect).

C#:
1
polisOndertekendatum = DateTime.Parse(txtOndertekenDatum_t1.Text.Trim());

polisOndertekenDatum is van het type DateTime.

We weten zeker dat de culture goed staat, daar ligt het niet aan. Ook is het date seperator dingetje een "-", en het maakt geen verschil of we wel of geen tijd meegeven.

Dit is wat er in het auto's scherm staat:
Afbeeldingslocatie: http://img258.imageshack.us/img258/7816/autosscherm0ec.gif

Het gaat om de dll mscorelib.dll.

Iemand dit ooit eerder meegemaakt? We draaien VS2003 vanuit een VMWare image, maar dit zou geen verschil moeten maken...

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En mogen we ook weten wat je dan in die Parse stopt? Met andere woorden: Wat is de waarde van txtOndertekenDatum_t1.Text.Trim()?

We adore chaos because we like to restore order - M.C. Escher


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wat als je Convert.ToDateTime (string) doet ?
En idd, wat zit er in txtOndertekenDAtum_t1.Text ?

https://fgheysels.github.io/


  • xces
  • Registratie: Juli 2001
  • Laatst online: 15:26

xces

To got or not to got..

Topicstarter
"31-12-2007" zit erin, dit zou hij dus moeten kunnen parsen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wat gebeurt er als je dit probeert om te zetten via Convert.ToDateTime ?
Wat gebeurt er als je de Parse method gebruikt waarin je expliciet een IFormatProvider meegeeft ?

https://fgheysels.github.io/


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:43

lier

MikroTik nerd

whoami schreef op donderdag 25 januari 2007 @ 15:35:
Wat gebeurt er als je dit probeert om te zetten via Convert.ToDateTime ?
Wat gebeurt er als je de Parse method gebruikt waarin je expliciet een IFormatProvider meegeeft ?
Deze dus...

Eerst het probleem, dan de oplossing


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Probeer eens 'hard' "12-31-2007" en kijk of dat wel werkt. Er zou dan wel iets met je culture niet kunnen deugen.

Skill is when luck becomes a habit.


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 01-12 23:45

Klippy

Still Game

Is toch wel een hoop over te vinden, maar zo te zien ga je de fout in omdat je de maand en dag verkeerd om hebt staan :)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Viper®
  • Registratie: Februari 2001
  • Niet online
Probeer parse zo eens:

DateTimeParse.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None);

Naar mijn inziens heeft het dus iets met culture/datetime format te maken.
dus dag/maand omgedraaid.
This is Convert.ToDateTime(string)

public static DateTime ToDateTime(string value)
{
if (value == null)
{
return new DateTime((long) 0);
}
return DateTime.Parse(value, CultureInfo.CurrentCulture);

}

And this is DateTime.Parse(string)

public static DateTime Parse(string s)
{
return DateTimeParse.Parse(s, DateTimeFormatInfo.CurrentInfo,
DateTimeStyles.None);

}

[ Voor 13% gewijzigd door Viper® op 25-01-2007 15:49 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Klippy schreef op donderdag 25 januari 2007 @ 15:44:
Is toch wel een hoop over te vinden, maar zo te zien ga je de fout in omdat je de maand en dag verkeerd om hebt staan :)
Niets van; dit wordt bepaald door de CultureInfo; ofwel de current CultureInfo ofwel de CultureInfo die je meegeeft aan die mehtod.

https://fgheysels.github.io/


Verwijderd

je hebt inderdaad de dag en de maand omgewisseld. kijk maar eens op deze pagina: http://msdn2.microsoft.com/en-us/library/1k1skd40.aspx die ook al eerder in dit topic werd gegeven. 1e example C#, daar zie je hoe microsoft een voorbeeld geeft over french-datatime.

zoals je ziet gebruiken wij hier in nederland het franse data/time model en niet het brits/amerikaanse.

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 01-12 23:45

Klippy

Still Game

whoami schreef op donderdag 25 januari 2007 @ 15:50:
[...]

Niets van; dit wordt bepaald door de CultureInfo; ofwel de current CultureInfo ofwel de CultureInfo die je meegeeft aan die mehtod.
Heb weer half zitten lezen ja O-)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
31-12-2007 is nog altijd een geldige datum in de regulieren nederlandse notatie.
Als de regional settings voor de datum van de topicstarter op dd/mm/yyyy staan, dan moet het gewoon werken. Indien z'n settings niet zo staan, dan zal hij zelf een andere IFOrmatProvider moeten meegeven...

https://fgheysels.github.io/


  • xces
  • Registratie: Juli 2001
  • Laatst online: 15:26

xces

To got or not to got..

Topicstarter
Oke, update; maakt niet uit of ik een iformatprovider meegeef of niet, wat ik ook meegeef;
31/12/2007
12/31/2007
31-12-2007
12-31-2007

Niets werkt. Het vreemde is, wanneer ik een nieuwe applicatie start en dezelfde code uitvoer, het netjes werkt. P.s. ik heb reeds 2 jaar .NET ervaring bij een grote nederlandse IT detacheerder, dus ik heb echt alles in mijn macht geprobeerd.

[ Voor 3% gewijzigd door xces op 26-01-2007 08:16 ]


  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 28-11 14:33

Rowdy.nl

Koekje d'r bij?

Probeer dit eens:
C#:
1
2
string sDatetime = txtOndertekenDatum_t1.Text.Trim() + " 00:00:00";
polisOndertekendatum = DateTime.Parse(sDateTime);


Op die link van whoami/lier vind je nl onderstaande tekst:
FormatException

s does not contain a valid string representation of a date and time.
Dus waarschijnlijk moet je een datum én tijd opgeven...

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Rowdy.nl schreef op vrijdag 26 januari 2007 @ 08:25:

Dus waarschijnlijk moet je een datum én tijd opgeven...
Nee, er staat ook nl. dit:
If s contains only a date and no time, this method assumes 12 A.M.
Maar, wat gebeurt er als je Convert.ToDateTime gebruikt ipv DateTime.Parse ?

https://fgheysels.github.io/


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Een corrupted reference ofzo. Verwijder alle references eens en voeg ze opnieuw toe.

  • xces
  • Registratie: Juli 2001
  • Laatst online: 15:26

xces

To got or not to got..

Topicstarter
Je raad nooit wat het probleem was. Vanmorgende sollution opnieuw uit clearcase (kuch) gehaald en inderdaad alle references weggedaan. Bleek dat de taal van onze image waarin we werken op EN stond, en VS de cultureinfo op een of andere manier niet meenam. Na het opnieuw ophalen van de sollution en bijwerken van de references ging het wel goed.
Pagina: 1