Περισσότερα
Μετατροπή μορφοποιημένης συμβολοσειράς dd/mm/yyyyyy σε Datetime
Είμαι νέος στο DotNet και τη C#. Θέλω να μετατρέψω μια συμβολοσειρά σε μορφή mm/dd/yyyyyy
σε αντικείμενο DateTime
. Δοκίμασα τη συνάρτηση ανάλυσης όπως παρακάτω, αλλά εμφανίζει σφάλμα χρόνου εκτέλεσης.
DateTime dt=DateTime.Parse("24/01/2013");
Καμία ιδέα για το πώς μπορώ να το μετατρέψω σε datetime;
95
3
Πρέπει να χρησιμοποιήσετε το
DateTime.ParseExact
με τη μορφή"dd/MM/yyyy"
Είναι ασφαλέστερο να χρησιμοποιήσετε
d/M/yyyy
για τη μορφή, καθώς αυτό θα χειριστεί τόσο μονοψήφιες όσο και διψήφιες ημέρες/μήνες. Αλλά αυτό εξαρτάται πραγματικά από το αν περιμένετε μονοψήφιες/διψήφιες τιμές.Η δική σας μορφή ημερομηνίας
ημέρα/μήνας/έτος
μπορεί να είναι μια αποδεκτή μορφή ημερομηνίας για ορισμένους πολιτισμούς. Για παράδειγμα, για την καναδική κουλτούραen-CA
ηDateTime.Parse
θα λειτουργούσε ως εξής: "Η ημερομηνία και η ώρα είναι η ημερομηνία που θα έπρεπε να είναι η ημερομηνία και η ώρα που θα έπρεπε να είναι η ημερομηνία και η ώρα που θα έπρεπε να είναι η ημερομηνία:Ή
Και οι δύο παραπάνω γραμμές θα λειτουργούσαν επειδή η μορφή της συμβολοσειράς είναι αποδεκτή για την κουλτούρα
en-CA
. Εφόσον δεν παρέχετε κάποια κουλτούρα στην κλήσηDateTime.Parse
, η τρέχουσα κουλτούρα σας χρησιμοποιείται για την ανάλυση η οποία δεν υποστηρίζει τη μορφή ημερομηνίας. Διαβάστε περισσότερα σχετικά στο DateTime.Parse.Μια άλλη μέθοδος για την ανάλυση είναι η χρήση της
DateTime.TryParseExact
Η ομάδα μεθόδων
TryParse
στο πλαίσιο .Net δεν πετάει εξαιρέσεις σε μη έγκυρες τιμές, αλλά επιστρέφει μια τιμήbool
που δείχνει την επιτυχία ή την αποτυχία της ανάλυσης.Παρατηρήστε ότι έχω χρησιμοποιήσει απλά
d
καιM
για την ημέρα και τον μήνα αντίστοιχα. Τα απλάd
καιM
λειτουργούν τόσο για μονοψήφια/διψήφια ψηφία ημέρας όσο και για μήνα. Έτσι, για τη μορφήd/M/yyyy
οι έγκυρες τιμές θα μπορούσαν να είναι:Για περαιτέρω ανάγνωση θα πρέπει να δείτε: Για να διαβάσετε περισσότερα, θα πρέπει να διαβάσετε το άρθρο: "Ορίστε, το βιβλίο του κ: Προσαρμοσμένες συμβολοσειρές μορφοποίησης ημερομηνίας και ώρας
use
DateTime.ParseExact
Το
null
θα χρησιμοποιήσει την τρέχουσα κουλτούρα, κάτι που είναι κάπως επικίνδυνο. Προσπαθήστε να δώσετε μια συγκεκριμένη κουλτούραΜπορείτε να χρησιμοποιήσετε τη μορφή
"dd/MM/yyyy"
για να τη χρησιμοποιήσετε στοDateTime.ParseExact
.Εδώ είναι ένα
DEMO
.Για περισσότερες πληροφορίες, δείτε το
Custom Date and Time Format Strings
.