Source file
src/time/example_test.go
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 ExampleTime_GoString() {
348 t := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
349 fmt.Println(t.GoString())
350 t = t.Add(1 * time.Minute)
351 fmt.Println(t.GoString())
352 t = t.AddDate(0, 1, 0)
353 fmt.Println(t.GoString())
354 t, _ = time.Parse("Jan 2, 2006 at 3:04pm (MST)", "Feb 3, 2013 at 7:54pm (UTC)")
355 fmt.Println(t.GoString())
356
357
358
359
360
361
362 }
363
364 func ExampleParse() {
365
366
367
368
369
370
371 const longForm = "Jan 2, 2006 at 3:04pm (MST)"
372 t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
373 fmt.Println(t)
374
375
376
377
378 const shortForm = "2006-Jan-02"
379 t, _ = time.Parse(shortForm, "2013-Feb-03")
380 fmt.Println(t)
381
382
383
384
385
386
387
388 t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
389 fmt.Println(t)
390 t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05+07:00")
391 fmt.Println(t)
392 _, err := time.Parse(time.RFC3339, time.RFC3339)
393 fmt.Println("error", err)
394
395
396
397
398
399
400
401 }
402
403 func ExampleParseInLocation() {
404 loc, _ := time.LoadLocation("Europe/Berlin")
405
406
407 const longForm = "Jan 2, 2006 at 3:04pm (MST)"
408 t, _ := time.ParseInLocation(longForm, "Jul 9, 2012 at 5:02am (CEST)", loc)
409 fmt.Println(t)
410
411
412 const shortForm = "2006-Jan-02"
413 t, _ = time.ParseInLocation(shortForm, "2012-Jul-09", loc)
414 fmt.Println(t)
415
416
417
418
419 }
420
421 func ExampleUnix() {
422 unixTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
423 fmt.Println(unixTime.Unix())
424 t := time.Unix(unixTime.Unix(), 0).UTC()
425 fmt.Println(t)
426
427
428
429
430 }
431
432 func ExampleUnixMicro() {
433 umt := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
434 fmt.Println(umt.UnixMicro())
435 t := time.UnixMicro(umt.UnixMicro()).UTC()
436 fmt.Println(t)
437
438
439
440
441 }
442
443 func ExampleUnixMilli() {
444 umt := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
445 fmt.Println(umt.UnixMilli())
446 t := time.UnixMilli(umt.UnixMilli()).UTC()
447 fmt.Println(t)
448
449
450
451
452 }
453
454 func ExampleTime_Unix() {
455
456 fmt.Println(time.Unix(1e9, 0).UTC())
457 fmt.Println(time.Unix(0, 1e18).UTC())
458 fmt.Println(time.Unix(2e9, -1e18).UTC())
459
460 t := time.Date(2001, time.September, 9, 1, 46, 40, 0, time.UTC)
461 fmt.Println(t.Unix())
462 fmt.Println(t.UnixNano())
463
464
465
466
467
468
469
470 }
471
472 func ExampleTime_Round() {
473 t := time.Date(0, 0, 0, 12, 15, 30, 918273645, time.UTC)
474 round := []time.Duration{
475 time.Nanosecond,
476 time.Microsecond,
477 time.Millisecond,
478 time.Second,
479 2 * time.Second,
480 time.Minute,
481 10 * time.Minute,
482 time.Hour,
483 }
484
485 for _, d := range round {
486 fmt.Printf("t.Round(%6s) = %s\n", d, t.Round(d).Format("15:04:05.999999999"))
487 }
488
489
490
491
492
493
494
495
496
497 }
498
499 func ExampleTime_Truncate() {
500 t, _ := time.Parse("2006 Jan 02 15:04:05", "2012 Dec 07 12:15:30.918273645")
501 trunc := []time.Duration{
502 time.Nanosecond,
503 time.Microsecond,
504 time.Millisecond,
505 time.Second,
506 2 * time.Second,
507 time.Minute,
508 10 * time.Minute,
509 }
510
511 for _, d := range trunc {
512 fmt.Printf("t.Truncate(%5s) = %s\n", d, t.Truncate(d).Format("15:04:05.999999999"))
513 }
514
515 midnight := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
516 _ = midnight
517
518
519
520
521
522
523
524
525
526 }
527
528 func ExampleLoadLocation() {
529 location, err := time.LoadLocation("America/Los_Angeles")
530 if err != nil {
531 panic(err)
532 }
533
534 timeInUTC := time.Date(2018, 8, 30, 12, 0, 0, 0, time.UTC)
535 fmt.Println(timeInUTC.In(location))
536
537 }
538
539 func ExampleLocation() {
540
541 secondsEastOfUTC := int((8 * time.Hour).Seconds())
542 beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
543
544
545
546
547
548
549 timeInUTC := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
550 sameTimeInBeijing := time.Date(2009, 1, 1, 20, 0, 0, 0, beijing)
551
552
553
554 timesAreEqual := timeInUTC.Equal(sameTimeInBeijing)
555 fmt.Println(timesAreEqual)
556
557
558
559 }
560
561 func ExampleTime_Add() {
562 start := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
563 afterTenSeconds := start.Add(time.Second * 10)
564 afterTenMinutes := start.Add(time.Minute * 10)
565 afterTenHours := start.Add(time.Hour * 10)
566 afterTenDays := start.Add(time.Hour * 24 * 10)
567
568 fmt.Printf("start = %v\n", start)
569 fmt.Printf("start.Add(time.Second * 10) = %v\n", afterTenSeconds)
570 fmt.Printf("start.Add(time.Minute * 10) = %v\n", afterTenMinutes)
571 fmt.Printf("start.Add(time.Hour * 10) = %v\n", afterTenHours)
572 fmt.Printf("start.Add(time.Hour * 24 * 10) = %v\n", afterTenDays)
573
574
575
576
577
578
579
580 }
581
582 func ExampleTime_AddDate() {
583 start := time.Date(2009, 1, 1, 0, 0, 0, 0, time.UTC)
584 oneDayLater := start.AddDate(0, 0, 1)
585 oneMonthLater := start.AddDate(0, 1, 0)
586 oneYearLater := start.AddDate(1, 0, 0)
587
588 fmt.Printf("oneDayLater: start.AddDate(0, 0, 1) = %v\n", oneDayLater)
589 fmt.Printf("oneMonthLater: start.AddDate(0, 1, 0) = %v\n", oneMonthLater)
590 fmt.Printf("oneYearLater: start.AddDate(1, 0, 0) = %v\n", oneYearLater)
591
592
593
594
595
596 }
597
598 func ExampleTime_After() {
599 year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
600 year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
601
602 isYear3000AfterYear2000 := year3000.After(year2000)
603 isYear2000AfterYear3000 := year2000.After(year3000)
604
605 fmt.Printf("year3000.After(year2000) = %v\n", isYear3000AfterYear2000)
606 fmt.Printf("year2000.After(year3000) = %v\n", isYear2000AfterYear3000)
607
608
609
610
611 }
612
613 func ExampleTime_Before() {
614 year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
615 year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
616
617 isYear2000BeforeYear3000 := year2000.Before(year3000)
618 isYear3000BeforeYear2000 := year3000.Before(year2000)
619
620 fmt.Printf("year2000.Before(year3000) = %v\n", isYear2000BeforeYear3000)
621 fmt.Printf("year3000.Before(year2000) = %v\n", isYear3000BeforeYear2000)
622
623
624
625
626 }
627
628 func ExampleTime_Date() {
629 d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
630 year, month, day := d.Date()
631
632 fmt.Printf("year = %v\n", year)
633 fmt.Printf("month = %v\n", month)
634 fmt.Printf("day = %v\n", day)
635
636
637
638
639
640 }
641
642 func ExampleTime_Day() {
643 d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
644 day := d.Day()
645
646 fmt.Printf("day = %v\n", day)
647
648
649
650 }
651
652 func ExampleTime_Equal() {
653 secondsEastOfUTC := int((8 * time.Hour).Seconds())
654 beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
655
656
657
658 d1 := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
659 d2 := time.Date(2000, 2, 1, 20, 30, 0, 0, beijing)
660
661 datesEqualUsingEqualOperator := d1 == d2
662 datesEqualUsingFunction := d1.Equal(d2)
663
664 fmt.Printf("datesEqualUsingEqualOperator = %v\n", datesEqualUsingEqualOperator)
665 fmt.Printf("datesEqualUsingFunction = %v\n", datesEqualUsingFunction)
666
667
668
669
670 }
671
672 func ExampleTime_String() {
673 timeWithNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 15, time.UTC)
674 withNanoseconds := timeWithNanoseconds.String()
675
676 timeWithoutNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 0, time.UTC)
677 withoutNanoseconds := timeWithoutNanoseconds.String()
678
679 fmt.Printf("withNanoseconds = %v\n", string(withNanoseconds))
680 fmt.Printf("withoutNanoseconds = %v\n", string(withoutNanoseconds))
681
682
683
684
685 }
686
687 func ExampleTime_Sub() {
688 start := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
689 end := time.Date(2000, 1, 1, 12, 0, 0, 0, time.UTC)
690
691 difference := end.Sub(start)
692 fmt.Printf("difference = %v\n", difference)
693
694
695
696 }
697
698 func ExampleTime_AppendFormat() {
699 t := time.Date(2017, time.November, 4, 11, 0, 0, 0, time.UTC)
700 text := []byte("Time: ")
701
702 text = t.AppendFormat(text, time.Kitchen)
703 fmt.Println(string(text))
704
705
706
707 }
708
709 func ExampleFixedZone() {
710 loc := time.FixedZone("UTC-8", -8*60*60)
711 t := time.Date(2009, time.November, 10, 23, 0, 0, 0, loc)
712 fmt.Println("The time is:", t.Format(time.RFC822))
713
714 }
715
View as plain text