Go 언어~번외편(시간의 처리법)을 열심히 배웠습니다~
16399 단어 Go
입문
안녕하세요.나는 모 학교에서 프로그래밍 등을 배우는 서버 분야의 프로그래머다
그럼 이번에는'Go언어 열심히 배웠어요~번외편~'으로 Go에서의 시간 처리 방법을 얘기해 보겠습니다.
앞으로 어떤 단락이 떠오르면 "Go 언어 열심히 배웠어요~ 번외편~"이라는 제목으로 TIPS 느낌으로 쓰세요.
포장
"time"패키지를 사용합니다.
현재 시간 가져오기
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Now()
fmt.Println(t) // => "2015-05-05 07:23:30.757800829 +0900 JST"
fmt.Println(t.Year()) // => "2015"
fmt.Println(t.Month()) // => "May"
fmt.Println(t.Day()) // => "5"
fmt.Println(t.Hour()) // => "7"
fmt.Println(t.Minute()) // => "23"
fmt.Println(t.Second()) // => "30"
fmt.Println(t.Weekday()) // => "Tuesday"
}
시간 객체 만들기
초 후에는 나노 2위 지정을 잊어버리기 쉬우니 주의해야 한다.
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 20, 23, 59, 59, 0, time.UTC)
fmt.Println(t) // => "2001-05-20 23:59:59 +0000 UTC"
t = time.Date(2001, 5, 20, 23, 59, 59, 0, time.Local)
fmt.Println(t) // => "2001-05-20 23:59:59 +0900 JST"
}
시간 처리 형식
time.gopackage main
import (
"fmt"
"time"
)
func main() {
day := time.Now()
//"2006年1月2日15時04分05秒"以外の時刻は正しいフォーマット文字列としては認識されない。
const layout = "2006-01-02 15:04:05"
fmt.Println(day.Format(layout))// => "2018-10-31 17:57:54"
}
여기서 의문은 왜 "2006-01-0215:04:05"가 격식입니까?
그것은 미국식 시간의 순서다.'1월 2일 오후 3시 4분 5초 2006년'(즉'자연순서'는 1, 2, 3, 4, 5, 6)을 가리킨다.Go 개발자 Rob Pike는 golang-nuts 메일 리스트에서 처음부터 꼼꼼히 고려했다면 이 순서대로 하지 않았을 것이라고 말했다. (영어권에서 영국이라면 다른 순서였지만) 이미 순서였기 때문에 바꿀 수 없었고 글도 잘 썼다.그래서 단순히 그렇다고 생각할 수밖에 없어요.
TIPS
그렇다면 얻기 어려운 기회이기 때문에 이럴 때 어떤 처리를 해야 할지 기술해야 한다.
지정된 날짜가 있는지 확인
time.gopackage main
import "fmt"
import "time"
func main() {
jd, err := isExist(2001, 1, 31)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2451940"
jd, err = isExist(2001, 1, 32)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2001-1-32 is not exist"
}
// 指定の日付が存在するかどうか調べる。
// 存在しない日付を指定してもtime.Date()はよきに計らってくれるので、
// 指定した日付と違うtime.Timeが返ってくれば指定した日付が間違ってると判定。
func isExist(year, month, day int) (float64, error) {
date := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
if date.Year() == year && date.Month() == time.Month(month) && date.Day() == day {
return Julian(date), nil
} else {
return 0, fmt.Errorf("%d-%d-%d is not exist", year, month, day)
}
}
// ユリウス日を求める
func Julian(t time.Time) float64 {
// Julian date, in seconds, of the "Format" standard time.
// (See http://www.onlineconversion.com/julian_date.htm)
const julian = 2453738.4195
// Easiest way to get the time.Time of the Unix time.
// (See comments for the UnixDate in package Time.)
unix := time.Unix(1136239445, 0)
const oneDay = float64(86400. * time.Second)
return julian + float64(t.Sub(unix))/oneDay
}
며칠 후, 며칠 전의 날짜를 구하다
AddDate를 사용할 수 있습니다.매개 변수는 year,month,day 순이다.
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 31, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, 1)
fmt.Println(t) // => "2001-06-01 00:00:00 +0900 JST"
t = time.Date(2001, 1, 1, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, -1)
fmt.Println(t) // => "2000-12-31 00:00:00 +0900 JST"
}
이상
무슨 잘못이 있으면 연락 주세요.
끝까지 읽어줘서 고마워요.
이번에 나는 이 보도를 참고했다 .
Reference
이 문제에 관하여(Go 언어~번외편(시간의 처리법)을 열심히 배웠습니다~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watataku8911/items/7c32df8a8c6b59d7401c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"time"패키지를 사용합니다.
현재 시간 가져오기
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Now()
fmt.Println(t) // => "2015-05-05 07:23:30.757800829 +0900 JST"
fmt.Println(t.Year()) // => "2015"
fmt.Println(t.Month()) // => "May"
fmt.Println(t.Day()) // => "5"
fmt.Println(t.Hour()) // => "7"
fmt.Println(t.Minute()) // => "23"
fmt.Println(t.Second()) // => "30"
fmt.Println(t.Weekday()) // => "Tuesday"
}
시간 객체 만들기
초 후에는 나노 2위 지정을 잊어버리기 쉬우니 주의해야 한다.
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 20, 23, 59, 59, 0, time.UTC)
fmt.Println(t) // => "2001-05-20 23:59:59 +0000 UTC"
t = time.Date(2001, 5, 20, 23, 59, 59, 0, time.Local)
fmt.Println(t) // => "2001-05-20 23:59:59 +0900 JST"
}
시간 처리 형식
time.gopackage main
import (
"fmt"
"time"
)
func main() {
day := time.Now()
//"2006年1月2日15時04分05秒"以外の時刻は正しいフォーマット文字列としては認識されない。
const layout = "2006-01-02 15:04:05"
fmt.Println(day.Format(layout))// => "2018-10-31 17:57:54"
}
여기서 의문은 왜 "2006-01-0215:04:05"가 격식입니까?
그것은 미국식 시간의 순서다.'1월 2일 오후 3시 4분 5초 2006년'(즉'자연순서'는 1, 2, 3, 4, 5, 6)을 가리킨다.Go 개발자 Rob Pike는 golang-nuts 메일 리스트에서 처음부터 꼼꼼히 고려했다면 이 순서대로 하지 않았을 것이라고 말했다. (영어권에서 영국이라면 다른 순서였지만) 이미 순서였기 때문에 바꿀 수 없었고 글도 잘 썼다.그래서 단순히 그렇다고 생각할 수밖에 없어요.
TIPS
그렇다면 얻기 어려운 기회이기 때문에 이럴 때 어떤 처리를 해야 할지 기술해야 한다.
지정된 날짜가 있는지 확인
time.gopackage main
import "fmt"
import "time"
func main() {
jd, err := isExist(2001, 1, 31)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2451940"
jd, err = isExist(2001, 1, 32)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2001-1-32 is not exist"
}
// 指定の日付が存在するかどうか調べる。
// 存在しない日付を指定してもtime.Date()はよきに計らってくれるので、
// 指定した日付と違うtime.Timeが返ってくれば指定した日付が間違ってると判定。
func isExist(year, month, day int) (float64, error) {
date := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
if date.Year() == year && date.Month() == time.Month(month) && date.Day() == day {
return Julian(date), nil
} else {
return 0, fmt.Errorf("%d-%d-%d is not exist", year, month, day)
}
}
// ユリウス日を求める
func Julian(t time.Time) float64 {
// Julian date, in seconds, of the "Format" standard time.
// (See http://www.onlineconversion.com/julian_date.htm)
const julian = 2453738.4195
// Easiest way to get the time.Time of the Unix time.
// (See comments for the UnixDate in package Time.)
unix := time.Unix(1136239445, 0)
const oneDay = float64(86400. * time.Second)
return julian + float64(t.Sub(unix))/oneDay
}
며칠 후, 며칠 전의 날짜를 구하다
AddDate를 사용할 수 있습니다.매개 변수는 year,month,day 순이다.
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 31, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, 1)
fmt.Println(t) // => "2001-06-01 00:00:00 +0900 JST"
t = time.Date(2001, 1, 1, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, -1)
fmt.Println(t) // => "2000-12-31 00:00:00 +0900 JST"
}
이상
무슨 잘못이 있으면 연락 주세요.
끝까지 읽어줘서 고마워요.
이번에 나는 이 보도를 참고했다 .
Reference
이 문제에 관하여(Go 언어~번외편(시간의 처리법)을 열심히 배웠습니다~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watataku8911/items/7c32df8a8c6b59d7401c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import "fmt"
import "time"
func main() {
t := time.Now()
fmt.Println(t) // => "2015-05-05 07:23:30.757800829 +0900 JST"
fmt.Println(t.Year()) // => "2015"
fmt.Println(t.Month()) // => "May"
fmt.Println(t.Day()) // => "5"
fmt.Println(t.Hour()) // => "7"
fmt.Println(t.Minute()) // => "23"
fmt.Println(t.Second()) // => "30"
fmt.Println(t.Weekday()) // => "Tuesday"
}
초 후에는 나노 2위 지정을 잊어버리기 쉬우니 주의해야 한다.
time.go
package main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 20, 23, 59, 59, 0, time.UTC)
fmt.Println(t) // => "2001-05-20 23:59:59 +0000 UTC"
t = time.Date(2001, 5, 20, 23, 59, 59, 0, time.Local)
fmt.Println(t) // => "2001-05-20 23:59:59 +0900 JST"
}
시간 처리 형식
time.gopackage main
import (
"fmt"
"time"
)
func main() {
day := time.Now()
//"2006年1月2日15時04分05秒"以外の時刻は正しいフォーマット文字列としては認識されない。
const layout = "2006-01-02 15:04:05"
fmt.Println(day.Format(layout))// => "2018-10-31 17:57:54"
}
여기서 의문은 왜 "2006-01-0215:04:05"가 격식입니까?
그것은 미국식 시간의 순서다.'1월 2일 오후 3시 4분 5초 2006년'(즉'자연순서'는 1, 2, 3, 4, 5, 6)을 가리킨다.Go 개발자 Rob Pike는 golang-nuts 메일 리스트에서 처음부터 꼼꼼히 고려했다면 이 순서대로 하지 않았을 것이라고 말했다. (영어권에서 영국이라면 다른 순서였지만) 이미 순서였기 때문에 바꿀 수 없었고 글도 잘 썼다.그래서 단순히 그렇다고 생각할 수밖에 없어요.
TIPS
그렇다면 얻기 어려운 기회이기 때문에 이럴 때 어떤 처리를 해야 할지 기술해야 한다.
지정된 날짜가 있는지 확인
time.gopackage main
import "fmt"
import "time"
func main() {
jd, err := isExist(2001, 1, 31)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2451940"
jd, err = isExist(2001, 1, 32)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2001-1-32 is not exist"
}
// 指定の日付が存在するかどうか調べる。
// 存在しない日付を指定してもtime.Date()はよきに計らってくれるので、
// 指定した日付と違うtime.Timeが返ってくれば指定した日付が間違ってると判定。
func isExist(year, month, day int) (float64, error) {
date := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
if date.Year() == year && date.Month() == time.Month(month) && date.Day() == day {
return Julian(date), nil
} else {
return 0, fmt.Errorf("%d-%d-%d is not exist", year, month, day)
}
}
// ユリウス日を求める
func Julian(t time.Time) float64 {
// Julian date, in seconds, of the "Format" standard time.
// (See http://www.onlineconversion.com/julian_date.htm)
const julian = 2453738.4195
// Easiest way to get the time.Time of the Unix time.
// (See comments for the UnixDate in package Time.)
unix := time.Unix(1136239445, 0)
const oneDay = float64(86400. * time.Second)
return julian + float64(t.Sub(unix))/oneDay
}
며칠 후, 며칠 전의 날짜를 구하다
AddDate를 사용할 수 있습니다.매개 변수는 year,month,day 순이다.
time.gopackage main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 31, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, 1)
fmt.Println(t) // => "2001-06-01 00:00:00 +0900 JST"
t = time.Date(2001, 1, 1, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, -1)
fmt.Println(t) // => "2000-12-31 00:00:00 +0900 JST"
}
이상
무슨 잘못이 있으면 연락 주세요.
끝까지 읽어줘서 고마워요.
이번에 나는 이 보도를 참고했다 .
Reference
이 문제에 관하여(Go 언어~번외편(시간의 처리법)을 열심히 배웠습니다~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watataku8911/items/7c32df8a8c6b59d7401c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import (
"fmt"
"time"
)
func main() {
day := time.Now()
//"2006年1月2日15時04分05秒"以外の時刻は正しいフォーマット文字列としては認識されない。
const layout = "2006-01-02 15:04:05"
fmt.Println(day.Format(layout))// => "2018-10-31 17:57:54"
}
그렇다면 얻기 어려운 기회이기 때문에 이럴 때 어떤 처리를 해야 할지 기술해야 한다.
지정된 날짜가 있는지 확인
time.go
package main
import "fmt"
import "time"
func main() {
jd, err := isExist(2001, 1, 31)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2451940"
jd, err = isExist(2001, 1, 32)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(int(jd))
}
// => "2001-1-32 is not exist"
}
// 指定の日付が存在するかどうか調べる。
// 存在しない日付を指定してもtime.Date()はよきに計らってくれるので、
// 指定した日付と違うtime.Timeが返ってくれば指定した日付が間違ってると判定。
func isExist(year, month, day int) (float64, error) {
date := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
if date.Year() == year && date.Month() == time.Month(month) && date.Day() == day {
return Julian(date), nil
} else {
return 0, fmt.Errorf("%d-%d-%d is not exist", year, month, day)
}
}
// ユリウス日を求める
func Julian(t time.Time) float64 {
// Julian date, in seconds, of the "Format" standard time.
// (See http://www.onlineconversion.com/julian_date.htm)
const julian = 2453738.4195
// Easiest way to get the time.Time of the Unix time.
// (See comments for the UnixDate in package Time.)
unix := time.Unix(1136239445, 0)
const oneDay = float64(86400. * time.Second)
return julian + float64(t.Sub(unix))/oneDay
}
며칠 후, 며칠 전의 날짜를 구하다
AddDate를 사용할 수 있습니다.매개 변수는 year,month,day 순이다.
time.go
package main
import "fmt"
import "time"
func main() {
t := time.Date(2001, 5, 31, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, 1)
fmt.Println(t) // => "2001-06-01 00:00:00 +0900 JST"
t = time.Date(2001, 1, 1, 0, 0, 0, 0, time.Local)
t = t.AddDate(0, 0, -1)
fmt.Println(t) // => "2000-12-31 00:00:00 +0900 JST"
}
이상무슨 잘못이 있으면 연락 주세요.
끝까지 읽어줘서 고마워요.
이번에 나는 이 보도를 참고했다 .
Reference
이 문제에 관하여(Go 언어~번외편(시간의 처리법)을 열심히 배웠습니다~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/watataku8911/items/7c32df8a8c6b59d7401c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)