ネットワークタイムスタンプをNT形式で作成したいと思います。datetimeをWindows 64ビットに変換するFILETIME
私はこの機能を読める時間に変換することができました:
NetworkStamp = "\xc0\x65\x31\x50\xde\x09\xd2\x01"
def GetTime(NetworkStamp):
Ftime = int(struct.unpack('<Q',NetworkStamp)[0])
Epoch = divmod(Ftime - 116444736000000000, 10000000)
Actualtime = datetime.datetime.fromtimestamp(Epoch[0])
return Actualtime, Actualtime.strftime('%Y-%m-%d %H:%M:%S')
print GetTime(NetworkStamp)
出力:
(datetime.datetime(2016, 9, 8, 11, 35, 57), '2016-09-08 11:35:57')
今、私はこれに'2016/09/08 11:35:57'
秒に変換する、反対のことをやってみたいです形式:
"\xc0\x65\x31\x50\xde\x09\xd2\x01"
OPは秒に切り捨てられたことを考えると、 100 nsの細分性の欠如は本当に重要ではありません。あなたはあなたが始めたものを得ることはできませんが、datetimeの制限のためではありません。 – ShadowRanger
また、なぜ 'divmod'の後に' divmod'を元に戻すのでしょうか? 'quotient'、' remainder'と 'microsecs'を定義する2行を' microsecs'を直接計算する1行に置き換えることができます: 'microsecs =(winticks - WINDOWS_TICKS_TO_POSIX_EPOCH)/ WINDOWS_TICKS' – ShadowRanger
@ShadowRanger:必要がないことを指摘してくれてありがとう「divmod」 - それは、自分自身のコードと違って、残りの部分を捨てず、より正確な変換を行う方法をOPに見せようとする私の遺物に過ぎませんでした。 0.1マイクロ秒の細分性が欠落しているかどうかについては、何らかの理由で開始したものとまったく同じ値を取得する必要がある場合があります。 – martineau