是否可以将从NTP服务器检索到的时间(使用python脚本)以这种格式"Wed Jul 13 00:17:58 CEST 2011"转换为这种格式"2011-07-13 00:18:10"
client = socket(AF_INET, SOCK_DGRAM)
data = 'x1b' + 47 * ' '
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
我得到这个格式:"Wed Jul 13 00:17:58 CEST 2011"
我想把它转换成这样的格式"2011-07-13 00:17:58" ('%Y-%m-%d %H:% m:%S')
谢谢:)
在你的情况下,你可以直接从秒数到你想要的时间格式;但是,我将在底部解释您的情况的确切代码片段之前解释一般解决方案。
一般来说,这类问题可以通过strptime和strftime的帮助来解决。你还应该参考python文档中的格式化代码。
strptime()
匹配日期字符串的片段并创建python时间结构。然后可以使用strftime()
将该时间结构转换为您想要的任何格式。
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")
或者在特殊情况下,您可以替换
utc_secs = time.ctime(utc_secs)
与(注意:如果你没有做from datetime import datetime
,那么你应该使用datetime.datetime.fromtimestamp
下面,而不是简单的datetime.fromtimestamp
)
formatted_time = datetime.fromtimestamp(utc_secs).strftime("%Y-%m-%d %H:%M:%S")
>>> 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'