2013-11-12 5 views
0

В то же время мое местное время и время сервера не равна, например:Python - как вычислить разницу во времени между локальным и сервером

1) Мой ПК местное время

$ python -c 'import time;print (time.strftime("%Y-%m-%d %I:%M-%S"))' 
2013-11-12 12:35:44 

2) От сервера я получаю JSON:

public function waitingAction() { 
    $sql = "select status,createdate from sh_av_queue where `status`='waiting'"; 
    $result = $this->db->fetchAll($sql); 
    $content = Zend_Json::encode($result); 
    $this->getResponse() 
      ->setHeader('Content-Type', 'application/json') 
      ->setBody($content) 
      ->sendResponse(); 
    exit; 
    } 

[{"status":"waiting","createdate":"2013-11-12 15:35:44"}] 

3) Теперь в локальном компьютере, у меня есть для представления времени различия в таком формате:

00:00:00 00:00:01 ... 00:00:59

Как мне сделать сравнение времени правильно в такой ситуации? (причина, по которой мое время отличается от местного времени сервера, но в то же время два разных времени, которые я должен сравнивать, как это было в сравнении с местным ПК)

+0

Попробуйте ['diff'] (http://br.php.net/manual/en/datetime.diff.php) –

ответ

1

Чтобы узнать разницу между местным временем сервера и локальным компьютером время:

#!/usr/bin/env python 
import json 
import urllib2 
from datetime import datetime 

local_dt = datetime.now() 
data = json.load(urllib2.urlopen(server_url)) 
# -> [{"status":"waiting","createdate":"2013-11-12 15:35:44"}] 
server_dt = datetime.strptime(data[0]["createdate"], "%Y-%m-%d %H:%M:%S") 
# -> datetime(2013, 11, 12, 15, 35, 44) 
print(server_dt - local_dt) 
# -> 3:00:00 

вы можете построить строку вручную:

td = server_dt - local_dt 
minutes, seconds = divmod(td.total_seconds(), 60) 
hours, minutes = divmod(minutes, 60) 
print("%02d:%02d:%02d" % (hours, minutes, seconds)) 
#-> 03:00:00 

Для сравнения часов, вы, вероятно, следует использовать UTC время на сервере и ПК:

utc_dt = datetime.utcnow() # PC 
Смежные вопросы