2010-03-11 30 views
8

Tôi muốn chuyển giá trị datetime vào tập lệnh python của tôi trên dòng lệnh. Ý tưởng đầu tiên của tôi là sử dụng optparse và chuyển giá trị vào như một chuỗi, sau đó sử dụng datetime.strptime để chuyển đổi nó thành một datetime. Điều này hoạt động tốt trên máy tính của tôi (python 2.6), nhưng tôi cũng cần chạy tập lệnh này trên các máy đang chạy python 2.4, không có datetime.strptime.đối số dòng lệnh datetime trong python 2.4

Làm cách nào tôi có thể chuyển giá trị ngày giờ cho tập lệnh trong python 2.4?

Dưới đây là đoạn code tôi đang sử dụng trong 2.6:

parser = optparse.OptionParser() 
parser.add_option("-m", "--max_timestamp", dest="max_timestamp", 
        help="only aggregate items older than MAX_TIMESTAMP", 
        metavar="MAX_TIMESTAMP(YYYY-MM-DD HH24:MM)") 
options,args = parser.parse_args() 
if options.max_timestamp: 
    # Try parsing the date argument 
    try: 
     max_timestamp = datetime.datetime.strptime(options.max_timestamp, "%Y-%m-%d %H:%M") 
    except: 
     print "Error parsing date input:",sys.exc_info() 
     sys.exit(1) 

Trả lời

16

Go bằng cách module time, mà đã đã có strptime trong 2.4:

>>> import time 
>>> t = time.strptime("2010-02-02 7:31", "%Y-%m-%d %H:%M") 
>>> t 
(2010, 2, 2, 7, 31, 0, 1, 33, -1) 
>>> import datetime 
>>> datetime.datetime(*t[:6]) 
datetime.datetime(2010, 2, 2, 7, 31) 
+0

này là hoàn hảo. Tôi đã nhận thấy time.strptime nhưng tôi mới để python và đã không nhận ra cách dễ dàng là để chuyển đổi thời gian để một datetime bằng cách sử dụng ký hiệu slice. Cảm ơn! –

+0

@Ike, bạn được chào đón! –

+1

Trong khi chờ đợi, thư viện python đã được cập nhật để bạn không cần phải sử dụng thời gian. Bây giờ, chỉ cần sử dụng: datetime.datetime.strptime() –

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