2015-02-12 1 views
9

parseTime :: ParseTime t => TimeLocale -> String -> String -> Maybe tHaskell - parseTime: wie ein Datum-String des Format und Gültigkeit prüfen

Diese Funktion überprüft das Format es drittes Argument (Datum string) mit ihrem zweiten (Formatstring, zum Beispiel ‚YYYY-MM-DD '). Es prüft jedoch nicht die Gültigkeit des Datums - stattdessen wird auf das nächstliegende gültige Datum gerundet.

import System.Locale 
import Data.Time 
parseTime defaultTimeLocale "%Y-%m-%d" "2015-01-99" :: Maybe Day 

Just 2015-01-31

Was ich möchte, ist ein gültiges Datum oder Fehler zu erhalten.

+1

Als Hack, könnten Sie analysieren/unparse und prüfen Sie, ob Sie Ihre Zeichenfolge zurück bekam. – chi

+3

Danke, aber das wirft ein Problem auf, zum Beispiel liefert parseTime den gleichen Wert für "2015-1-31" und "2015-01-31", also muss eine Zeichenfolge geändert werden. –

Antwort

0

Gute Frage! Soweit ich weiß, können Sie das nicht tun.

Es wäre ein exzellentes Feature sein auf der GitHub issue tracker zu beantragen, aber: https://github.com/haskell/time