Skip to content

Instantly share code, notes, and snippets.

@masayoshi634
Last active November 14, 2017 15:34
Show Gist options
  • Save masayoshi634/31256d07461867d21cc8ba280349c0d6 to your computer and use it in GitHub Desktop.
Save masayoshi634/31256d07461867d21cc8ba280349c0d6 to your computer and use it in GitHub Desktop.

現在の時間をISO-8601形式にする

ISO-8601形式はパターンがいくつかあるが、下記の形式とする
2017-11-14T22:30:01+09:00

dateコマンド(GNU版)

date +"%Y-%m-%dT%H:%M:%S%:z"

coreutils-8.25以降のdateコマンド 参考

date -Iseconds

golang

import time
func main(){
  time.Now().Format(time.RFC3339)
}

ruby

require 'time'
Time.now.iso8601

python3

import datetime
datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=+9), 'JST')).replace(microsecond=0).isoformat()

perl

use DateTime;
my  $now = DateTime->now(time_zone => "Asia/Tokyo")->iso8601().'+09:00';

ISO-8601形式をパースする

dateコマンド(GNU版)

date -d "2017-11-14T22:30:01+09:00" +"%Y/%m/%d %H:%M:%S" 

golang

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'
}

ruby

require 'time'
Time.iso8601("2017-11-14T22:30:01+09:00").strftime('%Y/%m/%d  %H:%M:%S') #'2017/11/14 22:30:01'

python3

  • 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'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment