Tôi có một chuỗi ngày có định dạng 'Thứ Hai ngày 15 tháng 2 năm 2010'. Tôi muốn thay đổi định dạng thành '15 / 02/2010 '. Tôi có thể làm cái này như thế nào?
Tôi có một chuỗi ngày có định dạng 'Thứ Hai ngày 15 tháng 2 năm 2010'. Tôi muốn thay đổi định dạng thành '15 / 02/2010 '. Tôi có thể làm cái này như thế nào?
Câu trả lời:
datetime
mô-đun có thể giúp bạn điều đó:
datetime.datetime.strptime(date_string, format1).strftime(format2)
Đối với ví dụ cụ thể bạn có thể làm
>>> datetime.datetime.strptime('Mon Feb 15 2010', '%a %b %d %Y').strftime('%d/%m/%Y')
'15/02/2010'
>>>
date_string
dưới dạng một chuỗi.
format1
cần phải là một chuỗi để thể hiện định dạng của chuỗi ngày đầu vào. format2
là định dạng chuỗi đích để xuất.
Bạn có thể cài đặt thư viện dateutil . parse
Hàm của nó có thể tìm ra định dạng chuỗi mà không cần phải chỉ định định dạng như bạn làm với datetime.strptime
.
from dateutil.parser import parse
dt = parse('Mon Feb 15 2010')
print(dt)
# datetime.datetime(2010, 2, 15, 0, 0)
print(dt.strftime('%d/%m/%Y'))
# 15/02/2010
python 3.x
nhu cầu để cài đặtpython-dateutil
pip install python-dateutil
>>> from_date="Mon Feb 15 2010"
>>> import time
>>> conv=time.strptime(from_date,"%a %b %d %Y")
>>> time.strftime("%d/%m/%Y",conv)
'15/02/2010'
chuyển đổi chuỗi thành đối tượng datetime
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
out = datetime.strptime(s, f)
print(out)
output:
2016-03-26 09:25:55
Vì câu hỏi này thường xuất hiện, đây là lời giải thích đơn giản.
datetime
hoặc time
mô-đun có hai chức năng quan trọng.
Trong cả hai trường hợp, chúng ta cần một chuỗi định dạng. Nó là phần biểu diễn cho biết ngày hoặc giờ được định dạng như thế nào trong chuỗi của bạn.
Bây giờ giả sử chúng ta có một đối tượng ngày tháng.
>>> from datetime import datetime
>>> d = datetime(2010, 2, 15)
>>> d
datetime.datetime(2010, 2, 15, 0, 0)
Nếu chúng ta muốn tạo một chuỗi từ ngày này ở định dạng 'Mon Feb 15 2010'
>>> s = d.strftime('%a %b %d %y')
>>> print s
Mon Feb 15 10
Giả sử chúng ta muốn chuyển đổi nó s
một lần nữa thành một datetime
đối tượng.
>>> new_date = datetime.strptime(s, '%a %b %d %y')
>>> print new_date
2010-02-15 00:00:00
Tham khảo Tài liệu này tất cả các chỉ thị định dạng liên quan đến ngày giờ.
Chỉ nhằm mục đích hoàn thành: khi phân tích cú pháp một ngày bằng cách sử dụng strptime()
và ngày chứa tên của ngày, tháng, v.v., hãy lưu ý rằng bạn phải tính đến ngôn ngữ.
Nó cũng được đề cập như một chú thích trong tài liệu .
Ví dụ:
import locale
print(locale.getlocale())
>> ('nl_BE', 'ISO8859-1')
from datetime import datetime
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> ValueError: time data '6-Mar-2016' does not match format '%d-%b-%Y'
locale.setlocale(locale.LC_ALL, 'en_US')
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> '2016-03-06'
@codeling và @ user1767754: Hai dòng sau sẽ hoạt động. Tôi không thấy ai đăng giải pháp hoàn chỉnh cho vấn đề ví dụ đã được hỏi. Hy vọng rằng điều này là đủ giải thích.
import datetime
x = datetime.datetime.strptime("Mon Feb 15 2010", "%a %b %d %Y").strftime("%d/%m/%Y")
print(x)
Đầu ra:
15/02/2010
Bạn cũng có thể đạt được điều này bằng cách sử dụng gấu trúc:
import pandas as pd
pd.to_datetime('Mon Feb 15 2010', format='%a %b %d %Y').strftime('%d/%m/%Y')
Đầu ra:
'15/02/2010'
Bạn có thể áp dụng phương pháp tiếp cận gấu trúc cho các kiểu dữ liệu khác nhau như:
import pandas as pd
import numpy as np
def reformat_date(date_string, old_format, new_format):
return pd.to_datetime(date_string, format=old_format, errors='ignore').strftime(new_format)
date_string = 'Mon Feb 15 2010'
date_list = ['Mon Feb 15 2010', 'Wed Feb 17 2010']
date_array = np.array(date_list)
date_series = pd.Series(date_list)
old_format = '%a %b %d %Y'
new_format = '%d/%m/%Y'
print(reformat_date(date_string, old_format, new_format))
print(reformat_date(date_list, old_format, new_format).values)
print(reformat_date(date_array, old_format, new_format).values)
print(date_series.apply(lambda x: reformat_date(x, old_format, new_format)).values)
Đầu ra:
15/02/2010
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
sử dụng thư viện datetime http://docs.python.org/library/datetime.html tra cứu 9.1.7. especiall strptime () strftime () Behavior¶ ví dụ http://pleac.sourceforge.net/pleac_python/datesandtimes.html