2013-04-29 55 views
13

Tôi muốn chuyển đổi một chuỗi như thế này "29-Apr-2013-15:59:02" thành nội dung nào đó có thể sử dụng được.Thời gian chuyển đổi (YYYY-MM-DD-HH: MM: SS) ngày

Dấu gạch ngang có thể dễ dàng được thay thế bằng dấu cách hoặc các ký tự khác. Định dạng này sẽ lý tưởng: "YYYYMMDD HH:mm:ss (20130429 15:59:02)".

Edit:

Xin lỗi, tôi không đặc biệt nhìn thấy câu trả lời trong bài viết khác. Nhưng một lần nữa, tôi không biết gì nên có thể đã nhìn vào giải pháp và không biết điều đó. Tôi đã làm việc này, nhưng tôi sẽ không xem xét nó "đẹp".

#29-Apr-2013-15:59:02 

import sys, datetime, time 

#inDate = sys.argv[1] 
inDate = 29-Apr-2013-15:59:02 

def getMonth(month): 
    monthDict = {'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'} 
    for k, v in monthDict.iteritems(): 
     if month == k: 
      return v 

day = inDate[:2] 
#print day 
month = inDate[3:6] 
#print month 
year = inDate[7:11] 
#print year 
time = inDate[-8:] 
#print time 

newDate = year+getMonth(month)+day 
newDateTime = newDate+" "+time 

print newDate 
print newDateTime 

Bất kỳ suy nghĩ nào về cải thiện?

+7

Có bạn đọc [strftime() 'và' strptime() 'hành vi'] (http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior) tài liệu? có những ví dụ ở đó sẽ giúp bạn. –

+1

@Andbdrew - Cẩn thận: http://meta.stackexchange.com/questions/172758/what-have-you-tried-epidemic – mgilson

+0

Tôi sẽ thử điều chỉnh cách bạn nhận được chuỗi ngày đó nếu có thể – cmd

Trả lời

27

Sử dụng datetime.strptime() để phân tích chuỗi inDate vào một đối tượng ngày, sử dụng datetime.strftime() đến đầu ra trong bất cứ định dạng mà bạn thích:

>>> from datetime import datetime 
>>> inDate = "29-Apr-2013-15:59:02" 
>>> d = datetime.strptime(inDate, "%d-%b-%Y-%H:%M:%S") 
>>> d 
datetime.datetime(2013, 4, 29, 15, 59, 2) 
>>> d.strftime("YYYYMMDD HH:mm:ss (%Y%m%d %H:%M:%S)") 
'YYYYMMDD HH:mm:ss (20130429 15:59:02)' 
Các vấn đề liên quan