0

同時に、ローカル時間とサーバー時間は等しくありません。たとえば、次のようになります。

1) 私の PC の現地時間は

$ 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) ローカル PC では、次のような形式で時差を表す必要があります。

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

このような状況で時間比較を正しくするにはどうすればよいですか? (私の時間はサーバー時間とローカルでは異なりますが、同時に2つの異なる時間を比較する必要があるため、ローカルPCの時間と比較します)

4

1 に答える 1

0

サーバーのローカル時間と PC のローカル時間の差を確認するには:

#!/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

時計を比較するには、おそらくサーバーと PC の両方で UTC 時間を使用する必要があります。

utc_dt = datetime.utcnow() # PC
于 2013-11-13T23:53:01.220 に答える