2011-07-12 17 views
5

Có thể chuyển đổi thời gian được truy lục từ máy chủ NTP (với tập lệnh python) ở định dạng này "Wed Jul 13 00:17:58 CEST 2011" sang định dạng này "2011-07-13 00:18:10"Ngày chuyển đổi được truy xuất từ ​​máy chủ ntp bằng python

client = socket(AF_INET, SOCK_DGRAM) 
    data = '\x1b' + 47 * '\0' 
    client.sendto(data, (ntp.server.com,123)) 
    data, address = client.recvfrom(1024) 
    if data: 
     utc_secs = struct.unpack('!12I', data)[10] 
     utc_secs -= 2208988800L 
     utc_secs = time.ctime(utc_secs) 
     print utc_secs 
     return utc_secs 

tôi nhận được định dạng này: "Wed 13 Tháng Bảy 00:17:58 CEST 2011"

tôi muốn chuyển đổi này sang định dạng này "2011/07/13 00: 17:58 "('% Y-% m-% d% H:% M:% S')

Xin cảm ơn :)

Trả lời

2

Trong trường hợp của bạn, bạn có thể đi trực tiếp từ số giây đến định dạng thời gian bạn mong muốn; tuy nhiên tôi sẽ giải thích giải pháp chung trước đoạn mã chính xác cho trường hợp của bạn ở dưới cùng.

Nói chung, loại sự cố này được giải quyết với sự trợ giúp của strptimestrftime. Bạn cũng nên tham khảo formatting codes trong tài liệu python.

strptime() khớp với các phần của chuỗi ngày tháng và tạo cấu trúc thời gian trăn. strftime() sau đó có thể được sử dụng để chuyển đổi cấu trúc thời gian đó thành bất kỳ định dạng nào bạn muốn.

from datetime import datetime 
ntp_time = datetime.strptime(time_str_from_ntp, "%a %b %y %H:%M:%S") 
formatted_time = datetime.strftime(ntp_time, "%Y-%m-%d %H:%M:%S") 

Hoặc trong trường hợp cụ thể của bạn, bạn có thể thay

utc_secs = time.ctime(utc_secs) 

với (Chú ý: nếu bạn đã không thực hiện from datetime import datetime thì bạn nên sử dụng datetime.datetime.fromtimestamp dưới đây và không chỉ đơn giản datetime.fromtimestamp)

formatted_time = datetime.fromtimestamp(utc_secs).strftime("%Y-%m-%d %H:%M:%S") 
1
>>> seC#your utc_secs 
1310511730 
>>> time.ctime(sec) #instead of this 
'Wed Jul 13 02:02:10 2011' 
>>> d = datetime.datetime.fromtimestamp(sec) #do this 
>>> d 
datetime.datetime(2011, 7, 13, 2, 2, 10) 
>>> d.strftime('%Y-%m-%d %H:%M:%S') 
'2011-07-13 02:02:10' 
Các vấn đề liên quan