mirror of
https://github.com/golang/go
synced 2024-11-20 08:04:42 -07:00
time: add a number of new examples
Change-Id: I14d19a3951fcae24e2c2ce2eb76312851e050fdd Reviewed-on: https://go-review.googlesource.com/61033 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
4933da68b5
commit
7758abf3b6
@ -394,3 +394,162 @@ func ExampleTime_Truncate() {
|
||||
// t.Truncate( 1m0s) = 12:15:00
|
||||
// t.Truncate(10m0s) = 12:10:00
|
||||
}
|
||||
|
||||
func ExampleLocation() {
|
||||
// China doesn't have daylight saving. It uses a fixed 8 hour offset from UTC.
|
||||
secondsEastOfUTC := int((8 * time.Hour).Seconds())
|
||||
beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
|
||||
|
||||
// If the system has a timezone database present, it's possible to load a location
|
||||
// from that, e.g.:
|
||||
// newYork, err := time.LoadLocation("America/New_York")
|
||||
|
||||
// Creating a time requires a location. Common locations are time.Local and time.UTC.
|
||||
timeInUTC := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
|
||||
sameTimeInBeijing := time.Date(2009, 1, 1, 20, 0, 0, 0, beijing)
|
||||
|
||||
// Although the UTC clock time is 1200 and the Beijing clock time is 2000, Beijing is
|
||||
// 8 hours ahead so the two dates actually represent the same instant.
|
||||
timesAreEqual := timeInUTC.Equal(sameTimeInBeijing)
|
||||
fmt.Println(timesAreEqual)
|
||||
|
||||
// Output:
|
||||
// true
|
||||
}
|
||||
|
||||
func ExampleTime_Add() {
|
||||
start := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
|
||||
afterTenSeconds := start.Add(time.Second * 10)
|
||||
afterTenMinutes := start.Add(time.Minute * 10)
|
||||
afterTenHours := start.Add(time.Hour * 10)
|
||||
afterTenDays := start.Add(time.Hour * 24 * 10)
|
||||
|
||||
fmt.Printf("start = %v\n", start)
|
||||
fmt.Printf("start.Add(time.Second * 10) = %v\n", afterTenSeconds)
|
||||
fmt.Printf("start.Add(time.Minute * 10) = %v\n", afterTenMinutes)
|
||||
fmt.Printf("start.Add(time.Hour * 10) = %v\n", afterTenHours)
|
||||
fmt.Printf("start.Add(time.Hour * 24 * 10) = %v\n", afterTenDays)
|
||||
|
||||
// Output:
|
||||
// start = 2009-01-01 12:00:00 +0000 UTC
|
||||
// start.Add(time.Second * 10) = 2009-01-01 12:00:10 +0000 UTC
|
||||
// start.Add(time.Minute * 10) = 2009-01-01 12:10:00 +0000 UTC
|
||||
// start.Add(time.Hour * 10) = 2009-01-01 22:00:00 +0000 UTC
|
||||
// start.Add(time.Hour * 24 * 10) = 2009-01-11 12:00:00 +0000 UTC
|
||||
}
|
||||
|
||||
func ExampleTime_AddDate() {
|
||||
start := time.Date(2009, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
oneDayLater := start.AddDate(0, 0, 1)
|
||||
oneMonthLater := start.AddDate(0, 1, 0)
|
||||
oneYearLater := start.AddDate(1, 0, 0)
|
||||
|
||||
fmt.Printf("oneDayLater: start.AddDate(0, 0, 1) = %v\n", oneDayLater)
|
||||
fmt.Printf("oneMonthLater: start.AddDate(0, 1, 0) = %v\n", oneMonthLater)
|
||||
fmt.Printf("oneYearLater: start.AddDate(1, 0, 0) = %v\n", oneYearLater)
|
||||
|
||||
// Output:
|
||||
// oneDayLater: start.AddDate(0, 0, 1) = 2009-01-02 00:00:00 +0000 UTC
|
||||
// oneMonthLater: start.AddDate(0, 1, 0) = 2009-02-01 00:00:00 +0000 UTC
|
||||
// oneYearLater: start.AddDate(1, 0, 0) = 2010-01-01 00:00:00 +0000 UTC
|
||||
}
|
||||
|
||||
func ExampleTime_After() {
|
||||
year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
|
||||
isYear3000AfterYear2000 := year3000.After(year2000) // True
|
||||
isYear2000AfterYear3000 := year2000.After(year3000) // False
|
||||
|
||||
fmt.Printf("year3000.After(year2000) = %v\n", isYear3000AfterYear2000)
|
||||
fmt.Printf("year2000.After(year3000) = %v\n", isYear2000AfterYear3000)
|
||||
|
||||
// Output:
|
||||
// year3000.After(year2000) = true
|
||||
// year2000.After(year3000) = false
|
||||
}
|
||||
|
||||
func ExampleTime_Before() {
|
||||
year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
|
||||
isYear2000BeforeYear3000 := year2000.Before(year3000) // True
|
||||
isYear3000BeforeYear2000 := year3000.Before(year2000) // False
|
||||
|
||||
fmt.Printf("year2000.Before(year3000) = %v\n", isYear2000BeforeYear3000)
|
||||
fmt.Printf("year3000.Before(year2000) = %v\n", isYear3000BeforeYear2000)
|
||||
|
||||
// Output:
|
||||
// year2000.Before(year3000) = true
|
||||
// year3000.Before(year2000) = false
|
||||
}
|
||||
|
||||
func ExampleTime_Date() {
|
||||
d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
|
||||
year, month, day := d.Date()
|
||||
|
||||
fmt.Printf("year = %v\n", year)
|
||||
fmt.Printf("month = %v\n", month)
|
||||
fmt.Printf("day = %v\n", day)
|
||||
|
||||
// Output:
|
||||
// year = 2000
|
||||
// month = February
|
||||
// day = 1
|
||||
}
|
||||
|
||||
func ExampleTime_Day() {
|
||||
d := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
|
||||
day := d.Day()
|
||||
|
||||
fmt.Printf("day = %v\n", day)
|
||||
|
||||
// Output:
|
||||
// day = 1
|
||||
}
|
||||
|
||||
func ExampleTime_Equal() {
|
||||
secondsEastOfUTC := int((8 * time.Hour).Seconds())
|
||||
beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)
|
||||
|
||||
// Unlike the equal operator, Equal is aware that d1 and d2 are the
|
||||
// same instant but in different time zones.
|
||||
d1 := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
|
||||
d2 := time.Date(2000, 2, 1, 20, 30, 0, 0, beijing)
|
||||
|
||||
datesEqualUsingEqualOperator := d1 == d2
|
||||
datesEqualUsingFunction := d1.Equal(d2)
|
||||
|
||||
fmt.Printf("datesEqualUsingEqualOperator = %v\n", datesEqualUsingEqualOperator)
|
||||
fmt.Printf("datesEqualUsingFunction = %v\n", datesEqualUsingFunction)
|
||||
|
||||
// Output:
|
||||
// datesEqualUsingEqualOperator = false
|
||||
// datesEqualUsingFunction = true
|
||||
}
|
||||
|
||||
func ExampleTime_String() {
|
||||
timeWithNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 15, time.UTC)
|
||||
withNanoseconds := timeWithNanoseconds.String()
|
||||
|
||||
timeWithoutNanoseconds := time.Date(2000, 2, 1, 12, 13, 14, 0, time.UTC)
|
||||
withoutNanoseconds := timeWithoutNanoseconds.String()
|
||||
|
||||
fmt.Printf("withNanoseconds = %v\n", string(withNanoseconds))
|
||||
fmt.Printf("withoutNanoseconds = %v\n", string(withoutNanoseconds))
|
||||
|
||||
// Output:
|
||||
// withNanoseconds = 2000-02-01 12:13:14.000000015 +0000 UTC
|
||||
// withoutNanoseconds = 2000-02-01 12:13:14 +0000 UTC
|
||||
}
|
||||
|
||||
func ExampleTime_Sub() {
|
||||
start := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
end := time.Date(2000, 1, 1, 12, 0, 0, 0, time.UTC)
|
||||
|
||||
difference := end.Sub(start)
|
||||
fmt.Printf("difference = %v\n", difference)
|
||||
|
||||
// Output:
|
||||
// difference = 12h0m0s
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user