2008-11-19 29 views
22

Tôi đã có chuỗi thời gian ngày này:Chuyển đổi một chuỗi với ngày tháng và thời gian để hẹn hò

post["date"] = "2007-07-18 10:03:19" 

Tôi muốn chỉ trích "2007/07/18" như một ngày. Tôi đã thấy một số tham chiếu đến strptime nhưng tôi không chắc chắn cách sử dụng nó. Làm thế nào tôi có thể trích xuất ngày từ chuỗi này?

+0

có thể trùng lặp với [Phân tích ngày và định dạng bằng python?] (Http://stackoverflow.com/questions/2265357/parse-date-and-format-it-using-python) – davidism

Trả lời

54

Hai câu trả lời khác cũng tốt, nhưng nếu bạn thực sự muốn ngày cho cái gì khác, bạn có thể sử dụng datetime mô-đun:

from datetime import datetime 
d = datetime.strptime('2007-07-18 10:03:19', '%Y-%m-%d %H:%M:%S') 
day_string = d.strftime('%Y-%m-%d') 

Nó có thể là quá mức cần thiết cho bây giờ, nhưng nó sẽ có ích. Bạn có thể xem tất cả các thông số định dạng here.

+0

u có thể cho tôi biết định dạng của "Wed Dec 17 14:58:39 IST 2014"? –

+0

@DinoopNair đây phải là định dạng bạn đang tìm kiếm: "% a% b% d% H:% M:% S% Z% Y" –

7

Trong trường hợp của bạn, chỉ cần sử dụng split:

>>> d1="2007-07-18 10:03:19" 
>>> d1.split()[0] 
'2007-07-18' 
>>> 

(Phần 1 sau khi chia tay với khoảng trắng)

Nếu bạn nhấn mạnh vào việc sử dụng strptime, định dạng là "%Y-%m-%d %H:%M:%S":

>>> import time 
>>> time.strptime(d1,"%Y-%m-%d %H:%M:%S") 
time.struct_time(tm_year=2007, tm_mon=7, tm_mday=18, tm_hour=10, tm_min=3, tm_sec=19, tm_wday=2, tm_yday=199, tm_isdst=-1) 
>>> time.strftime("%Y-%m-%d", _) 
'2007-07-18' 
>>> 
+2

để tránh IndexError cho dữ liệu rỗng, bạn có thể sử dụng 'd1.partition ('') [0]' – jfs

2

Có lẽ không phải những gì bạn đang tìm kiếm nhưng bạn chỉ có thể tách chuỗi:

post["date"].split()[0] 

sẽ cung cấp cho bạn '2007-07-18'

1

Bạn có thể sử dụng các mô-đun mx.DateTime từ eGenix

import mx 

date_object = mx.DateTime.Parser.DateTimeFromString('2007-07-18 10:03:19') 
print "%s-%s-%s" % (date_object.year, date_object.month, date_object.day) 

chí đầu ra: 2007-07-18

0

Bạn có thể sử dụng các mô-đun parsedatetime.

>>> from parsedatetime.parsedatetime import Calendar 
>>> c = Calendar() 
>>> c.parse("2007-07-18 10:03:19") 
((2008, 11, 19, 10, 3, 19, 2, 324, 0), 2) 
2

Bạn có thể sử dụng https://pypi.python.org/pypi/python-dateutil mà có thể hỗ trợ bất kỳ định dạng datetime ví dụ:

>>> from dateutil.parser import parse 
>>> d1="2007-07-18 10:03:19" 
>>> date_obj = parse(d1) 
>>> date_obj 
datetime.datetime(2007, 7, 18, 10, 3, 19) 
>>> date_obj.strftime("%Y-%m-%d") 
'2007-07-18' 
>>> d2 = "18-07-2007 10:03:19" 
>>> d = parse(d2) 
>>> d 
datetime.datetime(2007, 7, 18, 10, 3, 19) 
>>> d.strftime("%Y-%m-%d") 
'2007-07-18' 
0
import dateutil.parser 
a = "2007-07-18 10:03:19" 
d = dateutil.parser.parse(b).date() 

Output của bạn sẽ như thế nào

datetime.date này **

(2007, 07, 18)

**

Các vấn đề liên quan