回答編集履歴
3
質問に対する追記
answer
CHANGED
@@ -109,4 +109,78 @@
|
|
109
109
|
// Output:
|
110
110
|
// 2009/11/10 23:00:00 2010-02-10 23:00:00 +0000 UTC
|
111
111
|
// 2009/11/10 23:00:00 failed to getDate: failed to getDate(hogefugapiyo, 3)
|
112
|
+
```
|
113
|
+
|
114
|
+
※2021/02/21 9:21追記
|
115
|
+
## ①日にち単位での計算の時に、その日の10時からN日といったカウントを実現したいので、nowを設定するときにその日の10時と設定する方法も知っていたら教えて欲しいなと思っています!
|
116
|
+
|
117
|
+
`time.Date()`の引数に`time.Now()`を入れれば良いと思います。
|
118
|
+
[Playgroundのサンプルコード](https://play.golang.org/p/fF_vuGuilET)
|
119
|
+
|
120
|
+
```go
|
121
|
+
package main
|
122
|
+
|
123
|
+
import (
|
124
|
+
"fmt"
|
125
|
+
"log"
|
126
|
+
"time"
|
127
|
+
)
|
128
|
+
|
129
|
+
func main() {
|
130
|
+
now := time.Now()
|
131
|
+
// func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
|
132
|
+
// 10時を明示的に指定
|
133
|
+
tenOClock := time.Date(now.Year(), now.Month(), now.Day(), 10, 0, 0, 0, time.Local)
|
134
|
+
|
135
|
+
fmt.Println(now)
|
136
|
+
fmt.Println(tenOClock)
|
137
|
+
|
138
|
+
// サーバの環境情報がJSTになってない場合は、明示的にJSTを指定する
|
139
|
+
jst, err := time.LoadLocation("Asia/Tokyo")
|
140
|
+
if err != nil {
|
141
|
+
log.Fatalf("failed to LoadLocation: %s", err.Error())
|
142
|
+
}
|
143
|
+
fmt.Println(tenOClock.In(jst))
|
144
|
+
}
|
145
|
+
|
146
|
+
// Output:
|
147
|
+
// 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
|
148
|
+
// 2009-11-10 10:00:00 +0000 UTC
|
149
|
+
// 2009-11-10 19:00:00 +0900 JST
|
150
|
+
```
|
151
|
+
|
152
|
+
## ②ForeverDateですが、本当のMaxというよりは9999年12月31日0時0分0秒でセットしたいので、その方法でも教えて欲しいです!
|
153
|
+
|
154
|
+
同様に、`time.Date()`で日付を設定してください。
|
155
|
+
|
156
|
+
[Playgroundのサンプルコード](https://play.golang.org/p/fUs6kD28Z4g)
|
157
|
+
|
158
|
+
```go
|
159
|
+
package main
|
160
|
+
|
161
|
+
import (
|
162
|
+
"fmt"
|
163
|
+
"log"
|
164
|
+
"time"
|
165
|
+
)
|
166
|
+
|
167
|
+
func main() {
|
168
|
+
// func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
|
169
|
+
// ForeverDateを明示的に指定
|
170
|
+
foreverDate := time.Date(9999, 12, 31, 0, 0, 0, 0, time.Local)
|
171
|
+
|
172
|
+
fmt.Println(foreverDate)
|
173
|
+
|
174
|
+
// サーバの環境情報がJSTになってない場合は、明示的にJSTを指定する
|
175
|
+
jst, err := time.LoadLocation("Asia/Tokyo")
|
176
|
+
if err != nil {
|
177
|
+
log.Fatalf("failed to LoadLocation: %s", err.Error())
|
178
|
+
}
|
179
|
+
foreverDateJST := time.Date(9999, 12, 31, 0, 0, 0, 0, jst)
|
180
|
+
fmt.Println(foreverDateJST)
|
181
|
+
}
|
182
|
+
|
183
|
+
// Output:
|
184
|
+
// 9999-12-31 00:00:00 +0000 UTC
|
185
|
+
// 9999-12-31 00:00:00 +0900 JST
|
112
186
|
```
|
2
メソッド名の修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
疑問点などあれば、お気軽にどうぞ。
|
3
3
|
|
4
4
|
## 1. time.Time型での日付の計算
|
5
|
-
[Add()](https://golang.org/pkg/time/#Time.Add)や[
|
5
|
+
[Add()](https://golang.org/pkg/time/#Time.Add)や[AddDate()](https://golang.org/pkg/time/#Time.AddDate)などを使ってください。
|
6
6
|
詳しくは、[timeパッケージのドキュメント](https://golang.org/pkg/time/#Time)を参照してください。
|
7
7
|
ドキュメント内でExampleが複数提示されているので、結構読みやすいと思います。
|
8
8
|
|
1
exampleの追記
answer
CHANGED
@@ -7,8 +7,7 @@
|
|
7
7
|
ドキュメント内でExampleが複数提示されているので、結構読みやすいと思います。
|
8
8
|
|
9
9
|
|
10
|
-
簡単な実装例を載せておきます。
|
11
|
-
[
|
10
|
+
[簡単な実装例](https://play.golang.org/p/s1mFegkB8Hk)を載せておきます。
|
12
11
|
|
13
12
|
```go
|
14
13
|
package main
|
@@ -42,6 +41,12 @@
|
|
42
41
|
var maxLimitTime time.Time = time.Unix(math.MaxInt64, 0)
|
43
42
|
fmt.Println(maxLimitTime)
|
44
43
|
}
|
44
|
+
|
45
|
+
// Output:
|
46
|
+
// 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
|
47
|
+
// 2010-02-10 23:00:00 +0000 UTC
|
48
|
+
// 2009-12-03 23:00:00 +0000 UTC
|
49
|
+
// 292277026596-12-04 15:30:07 +0000 UTC
|
45
50
|
```
|
46
51
|
|
47
52
|
## 2.返り値にどの様な値が入るべきか(nilなどは片違いで怒られてまうので)
|
@@ -100,4 +105,8 @@
|
|
100
105
|
}
|
101
106
|
|
102
107
|
}
|
108
|
+
|
109
|
+
// Output:
|
110
|
+
// 2009/11/10 23:00:00 2010-02-10 23:00:00 +0000 UTC
|
111
|
+
// 2009/11/10 23:00:00 failed to getDate: failed to getDate(hogefugapiyo, 3)
|
103
112
|
```
|