6
votes

F # - dates d'analyse

Question très fondamentale concernant la date d'analyse de l'analyse en F #. Je suis très nouveau à F # et .net, alors s'il te plaît, veuillez porter avec moi.

Ma date a le format yyyymmdd comme 20100503 .

Comment Est-ce que je peux l'analyser dans un DateTime type in f #.

J'ai essayé system.datetime.parse ("20100503"); mais obtenir une erreur.

Comment puis-je passer une chaîne de format dans la méthode Payse ??

réponse est - merci à tout le monde pour les réponses. xxx


0 commentaires

5 Réponses :


0
votes

Le format n'est pas celui qui est accepté.

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

Vous pourriez avoir besoin de manipuler la chaîne avant de l'analyser.

Vous êtes sur la bonne voie cependant.


2 commentaires

Je pense que vous vouliez dire cela sur ma réponse. Là une variété de propriétés que vous pouvez définir sur l'objet DateTimeFormatinfo que vous créez, je pense que celui que vous voudriez définir est shortdate, je dois vous avertir, je ne sais pas si cela fonctionnera sans séparateur. C'est pourquoi je voudrais simplement manipuler la chaîne comme les deux réponses ont suggéré.


Vous devrez mettre la chaîne dans un format que DateTime.parse peut utiliser. Essayez de le changer en aaaaa-mm-dd. Vous pouvez d'autres d'autres ont déclaré utiliser DateTime.parseexact également, ce qui vous permettra de contrôler le format.



0
votes

Vous devrez utiliser la surcharge de DateTime.parse qui prend un iformatProvider. L'iFormatProvider que vous fournissez doit comprendre ce format.

Vous pouvez le faire en créant un objet DateTimeFormatinfo avec le format correct pour la chaîne de date que vous alliez à analyser.

Ceci est probablement beaucoup de travail pour ce que vous faites. Si vous pouvez réorganiser la chaîne un peu d'abord (la plus susceptible d'une chaîne de date avec des sépérateurs), vous serez probablement mieux sur.


0 commentaires

2
votes

J'ai répondu à un question similaire ce matin. Je n'ai pas utilisé F #, mais si vous avez accès à DateTime.parseexact, ma réponse pourrait vous aider.

Vous pouvez également envisager de tryparseexact afin que vous puissiez piéger une panne basée sur la fonction renvoyant false plutôt que de devoir la mettre à l'intérieur d'un essais attraper: xxx


1 commentaires

J'aime votre suggestion d'utiliser TryparseeXact. L'utilisation F # est différente de C # cependant. Il revient à la fois le succès et le résultat à la fois: Match DateTime.TryParseexact (S, "Yyyymmdd", CultureInfo.invarianTculture, DateTimestyle.none) avec | vrai, D -> D | Faux, _ -> DateTime.now . Si cela ne vous dérange pas, je vais ajouter ceci sous vos versions C #.



8
votes

Vous devriez être capable d'utiliser une chaîne de format personnalisée. Essayez ceci: xxx

voir http: // msdn.microsoft.com/en-us/library/8kb3ddd4.aspx Pour plus de détails.


0 commentaires

3
votes

datetime.parseexact ("20100503", "yyyymmdd", cultureinfo.currentculture)

Utilisez la méthode parseexact et utilisez minuscule D au lieu de la tige.


0 commentaires