0
Help us understand the problem. What are the problem?

posted at

【備忘録】Golangで日付の操作を実施する。

日付の操作

main.go
package main

import (
	"fmt"
	"time"
)

func main() {
	n := time.Now()

	// fmt.Println(n.Format("2006-01-02 15:04:05"))
	year := n.Format("2006")
	month := n.Format("2006-01")
	day := n.Format("2006-01-02")
	hour := n.Format("2006-01-02 15")
	min := n.Format("2006-01-02 15:04")
	sec := n.Format("2006-01-02 15:04:05")
	fmt.Println("year: ", year)
	fmt.Println("month: ", month)
	fmt.Println("day: ", day)
	fmt.Println("hour: ", hour)
	fmt.Println("min: ", min)
	fmt.Println("sec: ", sec)
}
~/go/src/array_slice $ go run main.go
year:  2022
month:  2022-05
day:  2022-05-18
hour:  2022-05-18 20
~/go/src/array_slice $ go run main.go
year:  2022
month:  2022-05
day:  2022-05-18
hour:  2022-05-18 20
min:  2022-05-18 20:11
sec:  2022-05-18 20:11:21

コラム(Formatの日付はなんでも良いの??)

2006-01-02 15:04:05と指定しているが、何か意味があるの??
→あります。この値を変更すると値を正しく取得できなくなります。

試しに2007とし、年を取得してみます。

package main

import (
	"fmt"
	"time"
)

func main() {
	n := time.Now()
	year := n.Format("2007")
	fmt.Println("year: ", year)
}
~/go/src/array_slice $ go run main.go
year:  18007

なんか、バグっていますね。内部的に意味を持つ値なのでしょう。

ちなみに、2006-01-02 15:04:05はアメリカの日付表記にした場合、「1月2日 3時4分5秒 6年(2006年)」となるようです。単に「123456」で綺麗じゃんってだけの話みたいです。
へー、って感じですよね。別に覚える必要は特にないと思いますが、なんか面白いですね。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?