2921 Stimmen

Konvertierung von String in Datetime

Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?

"Jun 1 2005  1:33PM"

19voto

guneysus Punkte 5747
In [34]: import datetime

In [35]: _now = datetime.datetime.now()

In [36]: _now
Out[36]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [37]: print _now
2016-01-19 09:47:00.432000

In [38]: _parsed = datetime.datetime.strptime(str(_now),"%Y-%m-%d %H:%M:%S.%f")

In [39]: _parsed
Out[39]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [40]: assert _now == _parsed

17voto

Ryu_hayabusa Punkte 3468

Django Timezone aware datetime object Beispiel.

import datetime
from django.utils.timezone import get_current_timezone
tz = get_current_timezone()

format = '%b %d %Y %I:%M%p'
date_object = datetime.datetime.strptime('Jun 1 2005  1:33PM', format)
date_obj = tz.localize(date_object)

Diese Konvertierung ist sehr wichtig für Django und Python, wenn Sie USE_TZ = True :

RuntimeWarning: DateTimeField MyModel.created received a naive datetime (2016-03-04 00:00:00) while time zone support is active.

16voto

Mackraken Punkte 477

Erstellen Sie eine kleine Hilfsfunktion wie:

def date(datestr="", format="%Y-%m-%d"):
    from datetime import datetime
    if not datestr:
        return datetime.today().date()
    return datetime.strptime(datestr, format).date()

Das ist vielseitig genug:

  • Wenn Sie keine Argumente übergeben, wird das heutige Datum zurückgegeben.
  • Es gibt ein Standard-Datumsformat, das Sie außer Kraft setzen können.
  • Sie können sie leicht so ändern, dass sie eine Datumsangabe zurückgibt.

16voto

Kanish Mathew Punkte 705

Es würde die hilfreich für die Umwandlung von String zu datetime und auch mit Zeitzone tun

def convert_string_to_time(date_string, timezone):
    from datetime import datetime
    import pytz
    date_time_obj = datetime.strptime(date_string[:26], '%Y-%m-%d %H:%M:%S.%f')
    date_time_obj_timezone = pytz.timezone(timezone).localize(date_time_obj)

    return date_time_obj_timezone

date = '2018-08-14 13:09:24.543953+00:00'
TIME_ZONE = 'UTC'
date_time_obj_timezone = convert_string_to_time(date, TIME_ZONE)

11voto

Bill Bell Punkte 20086

Pfeil bietet viele nützliche Funktionen für Datums- und Zeitangaben. Dieses Stück Code gibt eine Antwort auf die Frage und zeigt, dass arrow auch in der Lage ist, Datumsangaben einfach zu formatieren und Informationen für andere Sprachumgebungen anzuzeigen.

>>> import arrow
>>> dateStrings = [ 'Jun 1  2005 1:33PM', 'Aug 28 1999 12:00AM' ]
>>> for dateString in dateStrings:
...     dateString
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').datetime
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').format('ddd, Do MMM YYYY HH:mm')
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').humanize(locale='de')
...
'Jun 1  2005 1:33PM'
datetime.datetime(2005, 6, 1, 13, 33, tzinfo=tzutc())
'Wed, 1st Jun 2005 13:33'
'vor 11 Jahren'
'Aug 28 1999 12:00AM'
datetime.datetime(1999, 8, 28, 0, 0, tzinfo=tzutc())
'Sat, 28th Aug 1999 00:00'
'vor 17 Jahren'

Voir http://arrow.readthedocs.io/en/latest/ für mehr.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X