Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Πρόβλημα με το time module και την strptime()

Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #704

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Δουλεύοντας πάνω στο api του twitter ξεκίνησα να φτιάχνω έναν client για προσωπική χρήση χρησιμοποιώντας gtk και pygtk και το eclipse..

Σε καποιο σημείο του κώδικα ήθελα να πάρω την ημ/νια δημιουργίας ενός status μηνύματος.

Το twittwer api επιστρέφει την ημ/νια με την μορφή "Fri Jan 22 17:22:46 +0000 2010'.Μετρατέπωντάς το εγώ σε Unixοειδή ημερομηνία του προσθέτω την ζώνη ώρας στο τέλος και πλέον η ημερομηνία έχει την μορφή "Fri Jan 22 17:22:46 2010 +0000 UTC"
Παραθέτω τον κώδικα

stringmsgtime = user.status.created_at+' UTC'

Χρησιμοποιώ την time.mktime για να μετατρέψω την ημ/νια σε δευτερολεπτα και την time.strptime για να πάρω το time object για την μετατροπή....παραθέτω τον κώδικα

msgtime = time.mktime(time.strptime(stringmsgtime, '%a %b %d %H:%M:%S +0000 %Y %Z'))
(ο κωδικας είναι από το περιοδικό λίνουξφόρματ)

το θέμα είναι ότι παίρνω το ακόλουθο error

File "/usr/lib/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data 'Fri Jan 22 17:22:46 +0000 2010 UTC' does not match format '%a %b %d %H:%M:%S +0000 %Y %Z'

Δοκιμάζοντας το όμως σε κονσόλα στην python δούλεψε κανονικά και εκανε την μετατροπή σε δευτερόλεπτα

Παραθέτω τον κώδικα από την κονσόλα

for user in friends:
... stringmsgtime = user.status.created_at+' UTC'
... msgtime = time.mktime(time.strptime(stringmsgtime,'%a %b %d %H:%M:%S +0000 %Y %Z'))
... print msgtime
...
1264173766.0
1264262430.0
1264351761.0
1264148436.0
>>>
Ο ίδιο ακριβως κώδικας σε eclipse με χτυπάει το error....(Δοκίμασα και copy paste από την κονσόλα τον κώδικα και βγάζει τα ίδια error)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #705

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Χμμμμμμμ αφαίρεσα το import gtk που είχα στην αρχή και δούλεψε....γιατί όμως το gtk module δεν επιτρέπει στην strptime να δουλέψει?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #707

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
κάνοντας διάφορα τεστάκια πρόσεξα το εξής....όταν κάνω import το gtk....τότε η strptime περιμένει ημερομηνία στα ελληνικά δλδ της μορφής Τρι Ιαν 24 2010 ΕΕΤ

ενώ το twitter επιστρέφει ημερομηνία στα αγγλικά :huh:


Καμια ιδέα παράκαμψης
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #708

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Μήπως μπορείς να μας δώσεις ένα minimum κώδικα που αναπαράγει αυτό το πρόβλημα και τρέχει αυτοτελώς; Ίσως να μην μπορέσω να το εντοπίσω στο σύστημα μου γιατί δεν έχω πουθενά ελληνικά εκτός από το keyboard layout, αλλά θα μπορούσαμε να το προσπαθήσουμε.

Δεν ξέρω αν αυτό βοηθάει καθόλου:
pleac.sourceforge.net/pleac_python/datesandtimes.html
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #711

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.

#κάνω import μόνο το time
>>> import time
>>> date = time.localtime()
>>> stringtime = time.strftime('%a %b %d %H:%M:%S %Y %Z',date)
>>> print stringtime
Wed Jan 27 18:41:10 2010 EET
>>> date2 = time.strptime(stringtime,'%a %b %d %H:%M:%S %Y %Z')
>>> print date2
time.struct_time(tm_year=2010, tm_mon=1, tm_mday=27, tm_hour=18, tm_min=41, tm_sec=10, tm_wday=2, tm_yday=27, tm_isdst=0)

μέχρι εδώ όλα καλά....η date μετατρέπεται και σε string και η stringtime σε date object

>>> import gtk
>>> print stringtime
Wed Jan 27 18:41:10 2010 EET
>>> stringtime2 = time.strftime('%a %b %d %H:%M:%S %Y %Z',date)
>>> print stringtime2
Τετ Ιαν 27 18:41:10 2010 EET

με το που κάνω import τo gtk το stringformat είναι στα ελληνικα

>>> date3 = time.strptime(stringtime2,'%a %b %d %H:%M:%S %Y %Z')
>>> print date3
time.struct_time(tm_year=2010, tm_mon=1, tm_mday=27, tm_hour=18, tm_min=41, tm_sec=10, tm_wday=2, tm_yday=27, tm_isdst=0)

άμα κάνω strptime με την ελληνική stringtime2 δουλεύει!!

με την stringtime(αγγλικό φορμάτ )όχι....υποθέτω ότι περιμένει ελληνικά

>>> date4 = time.strptime(stringtime,'%a %b %d %H:%M:%S %Y %Z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/_strptime.py", line 454, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data 'Wed Jan 27 18:41:10 2010 EET' does not match format '%a %b %d %H:%M:%S %Y %Z'
>>>
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #712

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Από το documentation:
strptime() is independent of any platform and thus does not necessarily support all directives available that are not documented as supported.

Δυστυχώς δεν μπορώ να δοκιμάσω αυτό που μου έστειλες γιατί δεν έχω στο σύστημα μου ελληνικά.
1. Κάνε import πρώτα το gtk και ύστερα το time module μήπως γίνεται κάπου εκεί υπερκάλυψη της συνάρτησης strptime().
2. Ίσως να μπορείς να χρησιμοποιήσεις ως workaround την docs.python.org/library/datetime.html#datetime.date.isoformat
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #713

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
χμμμμ όχι δεν διορθώθηκε με το να κάνω import το gtk πρωτο....το θέμα είναι ότι σ'αυτό που θέλω να κάνω η ημερομηνια επιστρέφεται πάντα στα αγγλικα(twitter api) της μορφής Fri Jan 22....ισως μια μέθοδος που θα περνει την αγγλική ημερομηνία και μετά θα μετατρέπει τις μέρες και τους μήνες σε αριθμούς για να κάνω οποια μετατροπή θέλω....
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #714

  • sbosx
  • Το Άβαταρ του/της sbosx
  • Αποσυνδεμένος
  • Admin
  • to be or not to be?
  • Δημοσιεύσεις: 228
  • Ληφθείσες Ευχαριστίες 6
Από ότι καταλαβαίνω εσύ θες να πάρεις απλά τους αριθμούς της ημερομηνίας?!

αυτό έτσι και αλλιώς το έχεις κάνει εξαρχείς:
>>> import time
>>> date = time.localtime()
>>> date
(2010, 1, 28, 10, 27, 56, 3, 28, 0)
=>

tm_year=2010
tm_mon=1
tm_mday=28
tm_hour=10
tm_min=27
tm_sec=56
tm_wday=3
tm_yday=28
tm_isdst=0

Τότε αν θες και το string και για κάποιο λόγω το παίρνεις σε άλλη γλώσσα... παίζει να χρειαστείς να το φτιάξεις εσύ (όπως είπες)... δεν είναι δύσκολο έτσι και αλλιώς...! Αν και λίγο καγκούρικο αυτό!

επίσης και αυτό που έλεγε ο myle σου δίνει αν δε κάνω λάθος τα παραπάνω... δες εδώ: www.saltycrane.com/blog/2008/06/how-to-g...nt-date-and-time-in/
Αν και η time σου αρκεί...!
Τελευταία διόρθωση: 14 Χρόνια 2 Μήνες πριν από sbosx.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Πρόβλημα με το time module και την strptime() 14 Χρόνια 2 Μήνες πριν #715

  • gep
  • Το Άβαταρ του/της gep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
το θέμα είναι ότι θέλω ουσιαστικά μετατροπή σε sec οπότε χρειάζομαι την time.mktime(time.strptime).....αρα λίγο μπακαλίστικα θα πάρω την ημερομηνία και θα την μετατρέψω σε αριθμους....(παρ'όλα αυτά συνεχίζει να με φαίνεται περίεργο το γεγονος αυτό).Δηλαδή για μια international(καμια σχέση με την dana international) εφαρμογή σε gtk τι γίνεται?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.331 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου