Χρησιμοποιώντας python datetime.datetime.strptime στα παράθυρα με BST ζώνη ώρας

ψήφοι
2

Θα πρέπει να αναλύσει πολλές διαφορετικές ημερομηνίες σε πολλές διαφορετικές μορφές. Έχω πρόβλημα με την παρακάτω και αναρωτήθηκε αν anyopne θα μπορούσε να εξηγήσει γιατί?

Οι παρακάτω εργασίες σε ένα σύστημα linux:

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM BST','%a %d %b %Y %H:%M:%S %p %Z')

Αλλά τρέχει κάτω από τα παράθυρα θέτει

ValueError: χρονικά δεδομένα δεν ταιριάζει με τη μορφή

Ωστόσο, αν προσπαθώ GMT δεν BST στα παράθυρα, δουλεύει μια χαρά?

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM GMT','%a %d %b %Y %H:%M:%S %p %Z')

Υπάρχει ένας λόγος python δεν καταλαβαίνει τη ζώνη ώρας BST κάτω από τα παράθυρα, αλλά δουλεύει μια χαρά κάτω από το Linux;

ευχαριστώ,

Ματ.

Δημοσιεύθηκε 24/08/2011 στις 16:13
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Κατά τη γνώμη μου, την ανάλυση τριών επιστολή χρόνο κώδικα ζώνη όπως αυτό δεν είναι μια καλή πρακτική (εκτός φυσικά αν δεν έχουν άλλη επιλογή). Για παράδειγμα, «EST» χρησιμοποιείται ευρέως στις ΗΠΑ για την UTC-5.4 και χρησιμοποιείται επίσης ευρέως στην Αυστραλία. Έτσι, κάθε υποστήριξη για «EST» πρέπει, επομένως, να εξαρτάται από την τοπική ρύθμιση. Δεν θα με εξέπληττε αν «BST» ήταν εξίσου αμφίσημη.

Συστήνω ιδιαίτερα τη χρήση της pytzμονάδας στην οποία δίνεται βρετανικής πολιτικής φορά το αναγνωριστικό εγχόρδων Europe/Londonκαι UTC ονομάζεται Etc/UTC. Το pytzAPI θα δώσει συνεπή αποτελέσματα, ανεξάρτητα από τις τοπικές ρυθμίσεις του χρήστη ή του συστήματος που εκτελεί την εφαρμογή.

Εάν εργάζεστε σε μια UI που πρέπει να συνδέεται με locale, ή την ανάλυση εισροών με μορφές που δεν μπορούμε να αλλάξουμε, τότε θα εξετάσουμε χρησιμοποιώντας ένα λεξικό συντομογραφιών σε pytzαντικείμενα ζώνη ώρας. Για παράδειγμα: {'BST': 'Europe/London'}. Στη συνέχεια, η αίτησή σας μπορεί να λειτουργήσει με τις ημερομηνίες UTC και ώρες ομοιόμορφα, η οποία θα μειώσει σημαντικά την πιθανότητα λαθών.

Απαντήθηκε 24/08/2011 στις 16:50
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more