ISO-8601形式はパターンがいくつかあるが、下記の形式とする
2017-11-14T22:30:01+09:00
date +"%Y-%m-%dT%H:%M:%S%:z"
coreutils-8.25以降のdateコマンド 参考
date -Iseconds
import time
func main(){
time.Now().Format(time.RFC3339)
}
require 'time'
Time.now.iso8601
import datetime
datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=+9), 'JST')).replace(microsecond=0).isoformat()
use DateTime;
my $now = DateTime->now(time_zone => "Asia/Tokyo")->iso8601().'+09:00';
date -d "2017-11-14T22:30:01+09:00" +"%Y/%m/%d %H:%M:%S"
import (
"fmt"
"time"
)
func main() {
t, _ := time.Parse(time.RFC3339, "2017-11-14T22:30:01+09:00")
fmt.Println(t.Format("2006/1/2 15:04:05")) //'2017/11/14 22:30:01'
}
require 'time'
Time.iso8601("2017-11-14T22:30:01+09:00").strftime('%Y/%m/%d %H:%M:%S') #'2017/11/14 22:30:01'
- dateutilモジュールを使える場合は使えば簡単に戻る
timestamp = dateutil.parser.parse("2017-11-14T22:30:01+09:00") # dateutilモジュールが使える場合
timestamp.strftime('%Y/%m/%d %H:%M:%S') # '2017/11/14 22:30:01'
- 標準モジュールはちょっと複雑(%zが+0900しかパースできないので一回文字列変換してからパースする)
timestamp = datetime.datetime.strptime("".join("2017-11-14T22:30:01+09:00".rsplit(":",1)), "%Y-%m-%dT%H:%M:%S%z")
timestamp.strftime('%Y/%m/%d %H:%M:%S') #'2017/11/14 22:30:01'