Source file
src/time/example_test.go
Documentation: time
1
2
3
4
5 package time_test
6
7 import (
8 "fmt"
9 "time"
10 )
11
12 func expensiveCall() {}
13
14 func ExampleDuration() {
15 t0 := time.Now()
16 expensiveCall()
17 t1 := time.Now()
18 fmt.Printf("The call took %v to run.\n", t1.Sub(t0))
19 }
20
21 func ExampleDuration_Round() {
22 d, err := time.ParseDuration("1h15m30.918273645s")
23 if err != nil {
24 panic(err)
25 }
26
27 round := []time.Duration{
28 time.Nanosecond,
29 time.Microsecond,
30 time.Millisecond,
31 time.Second,
32 2 * time.Second,
33 time.Minute,
34 10 * time.Minute,
35 time.Hour,
36 }
37
38 for _, r := range round {
39 fmt.Printf("d.Round(%6s) = %s\n", r, d.Round(r).String())
40 }
41
42
43
44
45
46
47
48
49
50 }
51
52 func ExampleDuration_String() {
53 fmt.Println(1*time.Hour + 2*time.Minute + 300*time.Millisecond)
54 fmt.Println(300 * time.Millisecond)
55
56
57
58 }
59
60 func ExampleDuration_Truncate() {
61 d, err := time.ParseDuration("1h15m30.918273645s")
62 if err != nil {
63 panic(err)
64 }
65
66 trunc := []time.Duration{
67 time.Nanosecond,
68 time.Microsecond,
69 time.Millisecond,
70 time.Second,
71 2 * time.Second,
72 time.Minute,
73 10 * time.Minute,
74 time.Hour,
75 }
76
77 for _, t := range trunc {
78 fmt.Printf("d.Truncate(%6s) = %s\n", t, d.Truncate(t).String())
79 }
80
81
82
83
84
85
86
87
88
89 }
90
91 func ExampleParseDuration() {
92 hours, _ := time.ParseDuration("10h")
93 complex, _ := time.ParseDuration("1h10m10s")
94 micro, _ := time.ParseDuration("1µs")
95
96 micro2, _ := time.ParseDuration("1us")
97
98 fmt.Println(hours)
99 fmt.Println(complex)
100 fmt.Printf("There are %.0f seconds in %v.\n", complex.Seconds(), complex)
101 fmt.Printf("There are %d nanoseconds in %v.\n", micro.Nanoseconds(), micro)
102 fmt.Printf("There are %6.2e seconds in %v.\n", micro2.Seconds(), micro)
103
104
105
106
107
108
109 }
110
111 func ExampleDuration_Hours() {
112 h, _ := time.ParseDuration("4h30m")
113 fmt.Printf("I've got %.1f hours of work left.", h.Hours())
114
115 }
116
117 func ExampleDuration_Microseconds() {
118 u, _ := time.ParseDuration("1s")
119 fmt.Printf("One second is %d microseconds.\n", u.Microseconds())
120
121
122 }
123
124 func ExampleDuration_Milliseconds() {
125 u, _ := time.ParseDuration("1s")
126 fmt.Printf("One second is %d milliseconds.\n", u.Milliseconds())
127
128
129 }
130
131 func ExampleDuration_Minutes() {
132 m, _ := time.ParseDuration("1h30m")
133 fmt.Printf("The movie is %.0f minutes long.", m.Minutes())
134
135 }
136
137 func ExampleDuration_Nanoseconds() {
138 u, _ := time.ParseDuration("1µs")
139 fmt.Printf("One microsecond is %d nanoseconds.\n", u.Nanoseconds())
140
141
142 }
143
144 func ExampleDuration_Seconds() {
145 m, _ := time.ParseDuration("1m30s")
146 fmt.Printf("Take off in t-%.0f seconds.", m.Seconds())
147
148 }
149
150 var c chan int
151
152 func handle(int) {}
153
154 func ExampleAfter() {
155 select {
156 case m := <-c:
157 handle(m)
158 case <-time.After(10 * time.Second):
159 fmt.Println("timed out")
160 }
161 }
162
163 func ExampleSleep() {
164 time.Sleep(100 * time.Millisecond)
165 }
166
167 func statusUpdate() string { return "" }
168
169 func ExampleTick() {
170 c := time.Tick(5 * time.Second)
171 for next := range c {
172 fmt.Printf("%v %s\n", next, statusUpdate())
173 }
174 }
175
176 func ExampleMonth() {
177 _, month, day := time.Now().Date()
178 if month == time.November && day == 10 {
179 fmt.Println("Happy Go day!")
180 }
181 }
182
183 func ExampleDate() {
184 t := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
185 fmt.Printf("Go launched at %s\n", t.Local())
186
187 }
188
189 func ExampleNewTicker() {
190 ticker := time.NewTicker(time.Second)
191 defer ticker.Stop()
192 done := make(chan bool)
193 go func() {
194 time.Sleep(10 * time.Second)
195 done <- true
196 }()
197 for {
198 select {
199 case <-done:
200 fmt.Println("Done!")
201 return
202 case t := <-ticker.C:
203 fmt.Println("Current time: ", t)
204 }
205 }
206 }
207
208 func ExampleTime_Format() {
209
210 t, err := time.Parse(time.UnixDate, "Wed Feb 25 11:06:39 PST 2015")
211 if err != nil {
212 panic(err)
213 }
214
215
216 fmt.Println("default format:", t)
217
218
219 fmt.Println("Unix format:", t.Format(time.UnixDate))
220
221
222 fmt.Println("Same, in UTC:", t.UTC().Format(time.UnixDate))
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243 do := func(name, layout, want string) {
244 got := t.Format(layout)
245 if want != got {
246 fmt.Printf("error: for %q got %q; expected %q\n", layout, got, want)
247 return
248 }
249 fmt.Printf("%-16s %q gives %q\n", name, layout, got)
250 }
251
252
253 fmt.Printf("\nFormats:\n\n")
254
255
256 do("Basic full date", "Mon Jan 2 15:04:05 MST 2006", "Wed Feb 25 11:06:39 PST 2015")
257 do("Basic short date", "2006/01/02", "2015/02/25")
258
259
260
261
262 do("AM/PM", "3PM==3pm==15h", "11AM==11am==11h")
263
264
265
266
267
268 t, err = time.Parse(time.UnixDate, "Wed Feb 25 11:06:39.1234 PST 2015")
269 if err != nil {
270 panic(err)
271 }
272
273
274 do("No fraction", time.UnixDate, "Wed Feb 25 11:06:39 PST 2015")
275
276
277
278
279
280 do("0s for fraction", "15:04:05.00000", "11:06:39.12340")
281
282
283 do("9s for fraction", "15:04:05.99999999", "11:06:39.1234")
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299 }
300
301 func ExampleTime_Format_pad() {
302
303 t, err := time.Parse(time.UnixDate, "Sat Mar 7 11:06:39 PST 2015")
304 if err != nil {
305 panic(err)
306 }
307
308
309 do := func(name, layout, want string) {
310 got := t.Format(layout)
311 if want != got {
312 fmt.Printf("error: for %q got %q; expected %q\n", layout, got, want)
313 return
314 }
315 fmt.Printf("%-16s %q gives %q\n", name, layout, got)
316 }
317
318
319 do("Unix", time.UnixDate, "Sat Mar 7 11:06:39 PST 2015")
320
321
322
323
324
325 do("No pad", "<2>", "<7>")
326
327
328 do("Spaces", "<_2>", "< 7>")
329
330
331 do("Zeros", "<02>", "<07>")
332
333
334
335
336 do("Suppressed pad", "04:05", "06:39")
337
338
339
340
341
342
343
344
345 }
346
347 func ExampleParse() {
348
349
350
351
352
353
354 const longForm = "Jan 2, 2006 at 3:04pm (MST)"
355 t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
356 fmt.Println(t)
357
358
359
360
361 const shortForm = "2006-Jan-02"
362 t, _ = time.Parse(shortForm, "2013-Feb-03")
363 fmt.Println(t)
364
365
366
367
368
369
370
371 t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
372 fmt.Println(t)
373 t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05+07:00")
374 fmt.Println(t)
375 _, err := time.Parse(time.RFC3339, time.RFC3339)
376 fmt.Println("error", err)
377
378
379
380
381
382
383
384 }
385
386 func ExampleParseInLocation() {
387 loc, _ := time.LoadLocation("Europe/Berlin")
388
389
390 const longForm = "Jan 2, 2006 at 3:04pm (MST)"
391 t, _ := time.ParseInLocation(longForm, "Jul 9, 2012 at 5:02am (CEST)", loc)
392 fmt.Println(t)
393
394
395 const shortForm = "2006-Jan-02"
396 t, _ = time.ParseInLocation(shortForm, "2012-Jul-09", loc)
397 fmt.Println(t)
398
399
400
401
402 }
403
404 func ExampleTime_Unix() {
405
406 fmt.Println(time.Unix(1e9, 0).UTC())
407 fmt.Println(time.Unix(0, 1e18).UTC())
408 fmt.Println(time.Unix(2e9, -1e18).UTC())
409
410 t := time.Date(2001, time.September, 9, 1, 46, 40, 0, time.UTC)
411 fmt.Println(t.Unix())
412 fmt.Println(t.UnixNano())
413
414
415
416
417
418
419
420 }
421
422 func ExampleTime_Round() {
423 t := time.Date(0, 0, 0, 12, 15, 30, 918273645, time.UTC)
424 round := []time.Duration{
425 time.Nanosecond,
426 time.Microsecond,
427 time.Millisecond,
428 time.Second,
429 2 * time.Second,
430 time.Minute,
431 10 * time.Minute,
432 time.Hour,
433 }
434
435 for _, d := range round {
436 fmt.Printf("t.Round(%6s) = %s\n", d, t.Round(d).Format("15:04:05.999999999"))
437 }
438
439
440
441
442
443
444
445
446
447 }
448
449 func ExampleTime_Truncate() {
450 t, _ := time.Parse("2006 Jan 02 15:04:05", "2012 Dec 07 12:15:30.918273645")
451 trunc := []time.Duration{
452 time.Nanosecond,
453 time.Microsecond,
454 time.Millisecond,
455 time.Second,
456 2 * time.Second,
457 time.Minute,
458 10 * time.Minute,
459 }
460
461 for _, d := range trunc {
462 fmt.Printf("t.Truncate(%5s) = %s\n", d, t.Truncate(d).Format("15:04:05.999999999"))
463 }
464
465 midnight := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
466 _ = midnight
467
468
469
470
471
472
473
474
475
476 }
477
478 func ExampleLoadLocation() {
479 location, err := time.LoadLocation("America/Los_Angeles")
480 if err != nil {
481 panic(err)
482 }
483
484 timeInUTC := time.Date(2018, 8, 30, 12, 0, 0, 0, time.UTC)
485 fmt.Println(timeInUTC.In(location))
486
487 }
488
489 func ExampleLocation() {
490
491 secondsEastOfUTC := int((8 * time.Hour).Seconds())
492 beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
493
494
495
496
497
498
499 timeInUTC := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
500 sameTimeInBeijing := time.Date(2009, 1, 1, 20, 0, 0, 0, beijing)
501
502
503
504 timesAreEqual := timeInUTC.Equal(sameTimeInBeijing)
505 fmt.Println(timesAreEqual)
506
507
508
509 }
510
511 func ExampleTime_Add() {
512 start := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
513 afterTenSeconds := start.Add(time.Second * 10)
514 afterTenMinutes := start.Add(time.Minute * 10)
515 afterTenHours := start.Add(time.Hour * 10)
516 afterTenDays := start.Add(time.Hour * 24 * 10)
517
518 fmt.Printf("start = %v\n", start)
519 fmt.Printf("start.Add(time.Second * 10) = %v\n", afterTenSeconds)
520 fmt.Printf("start.Add(time.Minute * 10) = %v\n", afterTenMinutes)
521 fmt.Printf("start.Add(time.Hour * 10) = %v\n", afterTenHours)
522 fmt.Printf("start.Add(time.Hour * 24 * 10) = %v\n", afterTenDays)
523
524
525
526
527
528
529
530 }
531
532 func ExampleTime_AddDate() {
533 start := time.Date(2009, 1, 1, 0, 0, 0, 0, time.UTC)
534 oneDayLater := start.AddDate(0, 0, 1)
535 oneMonthLater := start.AddDate(0, 1, 0)
536 oneYearLater := start.AddDate(1, 0, 0)
537
538 fmt.Printf("oneDayLater: start.AddDate(0, 0, 1) = %v\n", oneDayLater)
539 fmt.Printf("oneMonthLater: start.AddDate(0, 1, 0) = %v\n", oneMonthLater)
540 fmt.Printf("oneYearLater: start.AddDate(1, 0, 0) = %v\n", oneYearLater)
541
542
543
544
545
546 }
547
548 func ExampleTime_After() {
549 year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
550 year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
551
552 isYear3000AfterYear2000 := year3000.After(year2000)
553 isYear2000AfterYear3000 := year2000.After(year3000)
554
555 fmt.Printf("year3000.After(year2000) = %v\n", isYear3000AfterYear2000)
556 fmt.Printf("year2000.After(year3000) = %v\n", isYear2000AfterYear3000)
557
558
559
560
561 }
562
563 func ExampleTime_Before() {
564 year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
565 year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
566
567 isYear2000BeforeYear3000 := year2000.Before(year3000)
568 isYear3000BeforeYear2000 := year3000.Before(year2000)
569
570 fmt.Printf("year2000.Before(year3000) = %v\n", isYear2000BeforeYear3000)
571 fmt.Printf("year3000.Before(year2000) = %v\n", isYear3000BeforeYear2000)
572
573
574
575
576 }
577
578 func ExampleTime_Date() {
579 d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
580 year, month, day := d.Date()
581
582 fmt.Printf("year = %v\n", year)
583 fmt.Printf("month = %v\n", month)
584 fmt.Printf("day = %v\n", day)
585
586
587
588
589
590 }
591
592 func ExampleTime_Day() {
593 d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
594 day := d.Day()
595
596 fmt.Printf("day = %v\n", day)
597
598
599
600 }
601
602 func ExampleTime_Equal() {
603 secondsEastOfUTC := int((8 * time.Hour).Seconds())
604 beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
605
606
607
608 d1 := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
609 d2 := time.Date(2000, 2, 1, 20, 30, 0, 0, beijing)
610
611 datesEqualUsingEqualOperator := d1 == d2
612 datesEqualUsingFunction := d1.Equal(d2)
613
614 fmt.Printf("datesEqualUsingEqualOperator = %v\n", datesEqualUsingEqualOperator)
615 fmt.Printf("datesEqualUsingFunction = %v\n", datesEqualUsingFunction)
616
617
618
619
620 }
621
622 func ExampleTime_String() {
623 timeWithNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 15, time.UTC)
624 withNanoseconds := timeWithNanoseconds.String()
625
626 timeWithoutNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 0, time.UTC)
627 withoutNanoseconds := timeWithoutNanoseconds.String()
628
629 fmt.Printf("withNanoseconds = %v\n", string(withNanoseconds))
630 fmt.Printf("withoutNanoseconds = %v\n", string(withoutNanoseconds))
631
632
633
634
635 }
636
637 func ExampleTime_Sub() {
638 start := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
639 end := time.Date(2000, 1, 1, 12, 0, 0, 0, time.UTC)
640
641 difference := end.Sub(start)
642 fmt.Printf("difference = %v\n", difference)
643
644
645
646 }
647
648 func ExampleTime_AppendFormat() {
649 t := time.Date(2017, time.November, 4, 11, 0, 0, 0, time.UTC)
650 text := []byte("Time: ")
651
652 text = t.AppendFormat(text, time.Kitchen)
653 fmt.Println(string(text))
654
655
656
657 }
658
659 func ExampleFixedZone() {
660 loc := time.FixedZone("UTC-8", -8*60*60)
661 t := time.Date(2009, time.November, 10, 23, 0, 0, 0, loc)
662 fmt.Println("The time is:", t.Format(time.RFC822))
663
664 }
665
View as plain text