jythonでtimestampを取得する方法
久々の投稿です。 最近は、脆弱性診断がメインで以前のようにコード書いたり、 インフラをがっつりやることは減りましたが楽しくやってます。 脆弱性診断ではBurpSuiteを主に利用しているのですが、 標準の機能では診断が困難な場合はExtensionの作成が必要になります。 例えば、HTTPリクエストヘッダにシグネチャを追加しなければならなかったりとか… ですね。 シグネチャに現時刻のタイムスタンプが使われていて、シグネチャを再生成する必要があったのですが、 JythonでExtensionを作成する際にハマったのでそのときのメモ。 Python2.7で現時刻のtimestampを取得する際はこう書いてました。 >>> from datetime import datetime >>> datetime.now().strftime('%s') '1538760310' しかし、Jython2.7で上記のコードを動かすと’%s’がまんま出力されます。 >>> from datetime import datetime >>> datetime.now().strftime('%s') '%s' あらら… と思ってJythonのドキュメントをみると’%s’が無いんですね。 8.1.7. strftime() Behavior - jython.org じゃあPythonにはあったのか?とPython2.7のドキュメント見ても無いんですね。 8.1.7. strftime() Behavior - docs.python.org いつから使えるようになっていたのだろうか。dateコマンドでは'+%s’があるのでPythonでも使えるだろうと思い雰囲気で使ってました。 jythonで’%s’が使えなくて困ってたので、timeライブラリを読み込んでmktimeで処理することに >>> from datetime import datetime >>> import time >>> str(int(time.mktime(datetime.now().timetuple()))) '1538761554' 一度intで囲んでるのは、mktimeするとfloat型で出てくるため。 ドキュメント読めば最初からハマらなかったんですが、'%s’使えないとは盲点だった。 おしまい。 »