2017-06-29 6 views
0

SQLクエリーから返されたエポックを取り出し、30分に切り上げ(または縮小)したいと考えています。私はコードの2行目でこれをやりたいどのようにそうするのか?Unix/POSIXタイムスタンプを一番近い30分に丸める方法は?

s = row.get("values")[0][1] 
s = <<<round to closest 30 mins>>> 
t = datetime.fromtimestamp(float(s)/1000.) 
dateFmt = "%Y-%m-%d" 
timeFmt = "%H:%M" 
date = t.strftime(dateFmt) 
time = t.strftime(timeFmt) 
+0

30分で除算して、再び30分を掛けます。 – smarx

+0

入力が秒単位の場合、 's = round(s/60/30)* 60 * 30'となります。しかし、あなたの '/ 1000.'を指定すると、おそらくミリ秒かかりますか?もしそうなら、 's = round(s/60/30/1000)* 60 * 30 * 1000'となります。 – smarx

+0

それは動作します!ありがとうございました –

答えて

0

最初にデータを期待される表現に変換します。これには、タイムゾーンの変更が関係する場合があります。 tが希望の表現であると仮定すると、あなたが欲しいの要素を置き換えることができます。

# python 3 
t.replace(minute=t.minute // 30 * 30, second=0, microsecond=0) 
# python 2 
t.replace(minute=t.minute/30 * 30, second=0, microsecond=0) 

あなたは、それは常に中になることを確信している場合を除き、私は、タイムスタンプ自体を操作に関するコメントからソリューションを使用していないだろうローカルタイムゾーン。奇数分のシフトで問題に遭遇することができます(+xx30+xx45のタイムゾーンがあります)

関連する問題