Какой метод преобразования строк в формате UTC в строку день-месяц-год? - PullRequest
0 голосов
/ 01 мая 2019

Я хотел бы преобразовать два списка строк в списки с одним и тем же форматом времени.

Вот наши два списка:

# first list: strings with UTC format
firstlist = ['2013-08-16T07:35:01Z','2012-11-17T17:07:49Z','2012-11-09T23:24:13Z']

# second list: strings with day-month-year format
secondlist = ['04-06-2016','31-10-2018','12-04-2019']

Я хотел бы преобразовать эти два списка иполучить одинаковый формат year-month-day для каждого элемента:

['2013-08-16','2012-11-17','2012-11-09'] # expected for the first list
['2016-06-04','2018-10-31','2019-04-12'] # expected for the second list

Я пытался использовать только один элемент в списке:

import time

time.strptime("2013-08-16T07:35:01Z", "%d %m %y")
time.strptime("04-06-2016", "%d %m %y")

Но я получаю сообщение об ошибке:

ValueError: time data '2013-08-16T07:35:01Z' does not match format '%d %m %y'

Я нашел эти две документации: время и дата-время .

Но я все еще в замешательстве.Возможно, что-то не так с моим методом, но я изо всех сил пытаюсь найти подходящий для этого случая.

Ответы [ 3 ]

2 голосов
/ 01 мая 2019

Это делает


import dateutil.parser

firstlist = list (map (lambda x: str (dateutil.parser.parse (x).date()), firstlist))
secondlist = list (map (lambda x: str (dateutil.parser.parse (x).date()), secondlist))

Используйте dateutil.parser.parse для преобразования в datetime.

Источник: здесь

2 голосов
/ 01 мая 2019

strptime возвращает struct_time объект с заданной строкой для анализа. Вам необходимо указать формат даты / времени для текущей строки ввода:

import time

# string to time struct
a = time.strptime("2013-08-16T07:35:01Z", "%Y-%m-%dT%H:%M:%SZ")
b = time.strptime("04-06-2016", "%d-%m-%Y")

Затем используйте strftime для форматирования объекта struct_time в строку:

# time struct to formatted string
a_formatted = time.strftime('%Y-%m-%d', a)
b_formatted = time.strftime('%Y-%m-%d', b)

print(a_formatted,b_formatted)

Выход:

2013-08-16 2016-06-04
1 голос
/ 01 мая 2019

Вы можете использовать dateutil парсер для анализа практически любого формата времени.

import datetime
from dateutil.parser import parse


firstlist = ['2013-08-16T07:35:01Z','2012-11-17T17:07:49Z','2012-11-09T23:24:13Z']
secondlist = ['04-06-2016','31-10-2018','12-04-2019']

new_firstlist = [datetime.datetime.strftime(parse(dt), "%Y-%m-%d") for dt in firstlist]
new_secondlist = [datetime.datetime.strftime(parse(dt), "%Y-%m-%d") for dt in secondlist]

print(new_firstlist)
print(new_secondlist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...