2017-03-23 3 views
2

ich pickadate.js bin mit dem das Datum in diesem Format zurückgibt:Convert String mit Name des Monats in Datetime

8 March, 2017 

Ich mag würde dies dem datetime Format konvertieren:

yyyy-mm-dd 

Was wäre der beste Weg, dies in Python zu tun?

+3

Sie können pickadate.js so konfigurieren, dass das Datum anders formatiert wird, z. '$ ('. datepicker'). pickadate ({formatSubmit: 'yyyy-mm-dd'});'. –

Antwort

8

In Python, ist dies eine einfache Übung bei der Verwendung des datetime Strings Format:

from datetime import datetime 

s = "8 March, 2017" 
d = datetime.strptime(s, '%d %B, %Y') 
print(d.strftime('%Y-%m-%d')) 

Siehe this Tabelle für eine vollständige Beschreibung aller Format-Qualifikation.

Hier verwende ich die Methode, um Ihre Datepicker.js Zeichenfolge in ein Python Datetime-Objekt zu konvertieren. Und ich verwende die .strftime Methode, um dieses Objekt als eine Zeichenfolge in dem von Ihnen gewünschten Format auszugeben. Anfangs werden diese Format-Strings schwer zu merken sein, aber Sie können sie immer nachschlagen. Und sie waren am Ende gut organisiert.

Ich frage mich allerdings: ist es vielleicht besser in JavaScript zu bleiben, als für diesen letzten Schritt zu Python zu wechseln? Wenn Sie Python anderswo in Ihrem Prozess verwenden, ist dies natürlich eine einfache Lösung.

+1

Formatspezifizierer 'A' /' a' und 'B' /' b' sind Wochentag und Monat, da sie normalerweise in dieser Reihenfolge kommen, wenn beide angegeben sind. In beiden Fällen bezieht sich der Kleinbuchstabe auf die Abkürzung, der Großbuchstabe auf den vollständigen Namen. –

+0

Mein Controller ist in Python, deshalb bevorzuge ich eine Lösung in Python gegenüber JavaScript. Danke für deine Antwort! – Arjun

3

Der Rat von Mark Reed könnte in Ihrem Fall am besten sein. Eine häufig übersehene Alternative für Daten ist das Pfeil Modul, das einige interessante Funktionen bietet. In diesem Fall können Sie tun:

>>> import arrow 
>>> arrow.get('8 March, 2017', 'D MMMM, YYYY').format('YYYY-MM-DD') 
'2017-03-08' 

Als Beispiel für eine Funktion, wenn Sie das Datum erfassen Sie es in russischer Sprache formatieren könnten.

>>> aDate = arrow.get('8 March, 2017', 'D MMMM, YYYY') 
>>> aDate.format('YYYY MMMM DD', locale='ru') 
'2017 марта 08' 
+0

Danke, ich war mit diesem Modul nicht vertraut. ziemlich ordentliche Art, Daten zu formatieren. – pawelty

+0

Das ist eigentlich ein sehr interessantes Modul! Vielen Dank – Arjun

Verwandte Themen