greekwow:
και τι δεν δοκίμασα χωρίς αποτέλεσμα
οποιοσδήποτε μπορεί να μου δώσει εναν απλό κώδικα θα του ήμουν ευγνώμων
Η DateTime.Parse είναι μόνο μία γραμμή. Ποιό απλό δεν γίνεται.
Υποψιάζομαι ότι το πρόβλημα σου δεν έχει να κάνει με το parsing αλλά με το locale του υπολογιστή σου. Η DateTime.Parse μεταφράζει τα strings χρησιμοποιώντας τις ρυθμίσεις του χρήστη για την ημερομηνία που είναι ΚΑΛΟ ΠΡΑΓΜΑ. Οι ημερομηνίες που μας δίνεις είναι σε αμερικάνικη μορφή. Αν το μηχάνημα σου είναι ρυθμισμένο σε ελληνική γλώσσα, η ημερομηνία 2/11/2009 θα μεταφραστεί σε 2 Νοεμβρίου, ενώ η 2/17/2009 θα αποτύχει.
Το πραγματικό πρόβλημα σε τέτοιες περιπτώσεις είναι ότι αποθήκευσες την ημερομηνία ως string σε κάποιο σημείο ενώ δεν έπρεπε. Στην περίπτωση σου, στη βάση. Αν αποθήκευσες την ημερομηνία ως string από ένα μηχάνημα με αμερικάνικο locale, η σημερινή ημερομηνία (18/2) θα αποθηκεύτηκε ως 2/18. Όταν πας να την διαβάσεις από ελληνικό μηχάνημα, το parsing λογικά θα αποτύχει. Μπορείς μεν να πεις στην DateTime.Parse ποιό locale να χρησιμοποιήσει, αλλά αυτό είναι απλά πασάλειμα και επίδεσμος. Η σωστή λύση είναι να αποθηκεύσεις την ημερομηνία στη βάση σωστά. Όλες οι βάσεις δεδομένων υποστηρίζουν πεδία date, οπότε δεν πρέπει να έχεις πρόβλημα.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos