2012-08-22 31 views
43

Tôi đang sử dụng strptime để chuyển đổi chuỗi ngày thành datetime. Theo trang liên kết, định dạng như thế này nên làm việc:Tại sao datetime.strptime không hoạt động trong ví dụ đơn giản này?

>>> # Using datetime.strptime() 
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") 

Mã của tôi là:

import datetime 
dtDate = datetime.strptime(sDate,"%m/%d/%Y") 

nơi sDate = "07/27/2012" (ví dụ). (Tôi hiểu, từ cùng một trang, đó %Y "Năm với thế kỷ dạng số thập phân.")

Tôi đã thử đặt giá trị thực tế của sDate vào mã:

dtDate = datetime.strptime("07/27/2012","%m/%d/%Y") 

nhưng điều này không hoạt động. Lỗi tôi nhận được là: Thuộc tínhLỗi: đối tượng 'mô-đun' không có thuộc tính 'strptime'

Tôi đang làm gì sai?

+0

lỗi mà bạn nhận được là gì? –

+1

Lỗi có thể là chức năng không có trong mô-đun. Thử nhập datetime từ datetime. Hoặc gọi là datetime.datetime.strptime – jrdn

+0

@MartijnPieters: cảm ơn. Ngay sau khi tôi đăng nó, tôi nhận ra tôi nên có thêm rằng ... :) – Wikis

Trả lời

46

Bạn nên sử dụng datetime.datetime.strptime. Lưu ý rằng phiên bản cũ của Python (2.4 trở lên) không có datetime.datetime.strptime; sử dụng time.strptime trong trường hợp đó.

+2

Đó là nó, cảm ơn! Tôi đang sử dụng Python thời tiền sử 2.3! – Wikis

+11

Bạn nên nâng cấp phiên bản Python của mình ngay khi thực tế. –

6

Bởi vì datetime là mô-đun. Lớp học là datetime.datetime.

import datetime 
dtDate = datetime.datetime.strptime(sDate,"%m/%d/%Y") 
+1

Cảm ơn, nhưng sau đó tôi nhận được: ** AttributeError: loại đối tượng 'datetime.datetime' không có thuộc tính 'strptime' ** – Wikis

+0

@Wikis: bạn có mô-đun khác có tên 'datetime' trong dự án của bạn không? –

+0

Số 'datetime' được sử dụng ở một nơi khác:' now = datetime.datetime.now() 'nếu đó là bất kỳ trợ giúp nào. – Wikis

16

Bạn đang nhập ngày giờ mô-đun, không có chức năng strptime.

Đó mô-đun không có một đối tượng datetime với phương pháp mà mặc dù:

import datetime 
dtDate = datetime.datetime.strptime(sDate, "%m/%d/%Y") 

Hoặc bạn có thể nhập khẩu các đối tượng datetime từ các module:

from datetime import datetime 
dtDate = datetime.strptime(sDate, "%m/%d/%Y") 

Lưu ý rằng phương pháp strptime đã được bổ sung trong python 2,5; nếu bạn đang sử dụng một phiên bản cũ sử dụng đoạn mã sau thay vì:

import datetime, time 
dtDate = datetime.datetime(*time.strptime(sDate, "%m/%d/%Y")[:6]) 
0

Bạn nên sử dụng phương pháp strftime tĩnh từ datetime lớp từ datetime module. Hãy thử:

import datetime 
dtDate = datetime.datetime.strptime("07/27/2012", "%m/%d/%Y") 
0

Bạn cũng có thể làm như sau, để nhập khẩu datetime

from datetime import datetime as dt 

dt.strptime(date, '%Y-%m-%d') 
Các vấn đề liên quan