teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

質問に対する追記

2021/02/21 00:38

投稿

task4233
task4233

スコア106

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

メソッド名の修正

2021/02/21 00:38

投稿

task4233
task4233

スコア106

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  疑問点などあれば、お気軽にどうぞ。
3
3
 
4
4
  ## 1. time.Time型での日付の計算
5
- [Add()](https://golang.org/pkg/time/#Time.Add)や[After()](https://golang.org/pkg/time/#Time.After)などを使ってください。
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の追記

2021/02/20 03:52

投稿

task4233
task4233

スコア106

answer CHANGED
@@ -7,8 +7,7 @@
7
7
  ドキュメント内でExampleが複数提示されているので、結構読みやすいと思います。
8
8
 
9
9
 
10
- 簡単な実装例を載せておきます。
11
- [Go Playground](https://play.golang.org/p/s1mFegkB8Hk)
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
  ```