2016-09-08 30 views
4

我從日期時間系統獲取當前時間並將其存儲爲字符串(timenow),但有一些行爲差異,當我通過sshclient_exec_command發送它設置在Linux中。語法aggrevate年:月:與strftime命令的日期

下面是我的代碼:

timenow = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S") 
command = 'date -s %s' %timenow 
stdin, stdout, stderr = self._sshclient.exec_command(command, timeout=10) 
try: 
    command = 'date +"%Y-%m-%d %H:%M:%S"' 
    stdin, stdout, stderr = self._sshclient.exec_command(command, timeout=10) 
    ip_time_now = stdout.read().decode(encoding='UTF-8').rstrip('\n') 
    self.logger.debug(" ip=%s timenow=%s ip_time_now=%s",ip, timenow,ip_time_now) 

輸出

timenow=2016-09-07 20:15:26 ip_time_now=2016-09-07 21:06:24 

兩個timenow和ip_time_now都應該是相同的,從操作

在這裏,如果我有

更換timenow線
timenow = datetime.datetime.utcnow().strftime("%H:%M:%S") #passes, but without 
                 setting the year and month 

輸出

timenow=20:25:49 ip_time_now=2016-09-07 20:25:50 #1 sec diff is ok 

注:沒有例外輸出在執行命令

什麼是對的strftime語法可能的解決方案?

回答

1

更換

command = 'date -s %s' %timenow 

command = 'date --set "%s"' %timenow 

會解決。