1// Copyright 2013 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package time 6 7import ( 8 "sync" 9) 10 11func ResetLocalOnceForTest() { 12 localOnce = sync.Once{} 13 localLoc = Location{} 14} 15 16func ForceUSPacificForTesting() { 17 ResetLocalOnceForTest() 18 localOnce.Do(initTestingZone) 19} 20 21func ZoneinfoForTesting() *string { 22 return zoneinfo 23} 24 25func ResetZoneinfoForTesting() { 26 zoneinfo = nil 27 zoneinfoOnce = sync.Once{} 28} 29 30var ( 31 DisablePlatformSources = disablePlatformSources 32 GorootZoneSource = gorootZoneSource 33 ParseTimeZone = parseTimeZone 34 SetMono = (*Time).setMono 35 GetMono = (*Time).mono 36 ErrLocation = errLocation 37 ReadFile = readFile 38 LoadTzinfo = loadTzinfo 39 NextStdChunk = nextStdChunk 40 Tzset = tzset 41 TzsetName = tzsetName 42 TzsetOffset = tzsetOffset 43) 44 45func LoadFromEmbeddedTZData(zone string) (string, error) { 46 return loadFromEmbeddedTZData(zone) 47} 48 49type RuleKind int 50 51const ( 52 RuleJulian = RuleKind(ruleJulian) 53 RuleDOY = RuleKind(ruleDOY) 54 RuleMonthWeekDay = RuleKind(ruleMonthWeekDay) 55 UnixToInternal = unixToInternal 56) 57 58type Rule struct { 59 Kind RuleKind 60 Day int 61 Week int 62 Mon int 63 Time int 64} 65 66func TzsetRule(s string) (Rule, string, bool) { 67 r, rs, ok := tzsetRule(s) 68 rr := Rule{ 69 Kind: RuleKind(r.kind), 70 Day: r.day, 71 Week: r.week, 72 Mon: r.mon, 73 Time: r.time, 74 } 75 return rr, rs, ok 76} 77 78// StdChunkNames maps from nextStdChunk results to the matched strings. 79var StdChunkNames = map[int]string{ 80 0: "", 81 stdLongMonth: "January", 82 stdMonth: "Jan", 83 stdNumMonth: "1", 84 stdZeroMonth: "01", 85 stdLongWeekDay: "Monday", 86 stdWeekDay: "Mon", 87 stdDay: "2", 88 stdUnderDay: "_2", 89 stdZeroDay: "02", 90 stdUnderYearDay: "__2", 91 stdZeroYearDay: "002", 92 stdHour: "15", 93 stdHour12: "3", 94 stdZeroHour12: "03", 95 stdMinute: "4", 96 stdZeroMinute: "04", 97 stdSecond: "5", 98 stdZeroSecond: "05", 99 stdLongYear: "2006", 100 stdYear: "06", 101 stdPM: "PM", 102 stdpm: "pm", 103 stdTZ: "MST", 104 stdISO8601TZ: "Z0700", 105 stdISO8601SecondsTZ: "Z070000", 106 stdISO8601ShortTZ: "Z07", 107 stdISO8601ColonTZ: "Z07:00", 108 stdISO8601ColonSecondsTZ: "Z07:00:00", 109 stdNumTZ: "-0700", 110 stdNumSecondsTz: "-070000", 111 stdNumShortTZ: "-07", 112 stdNumColonTZ: "-07:00", 113 stdNumColonSecondsTZ: "-07:00:00", 114 stdFracSecond0 | 1<<stdArgShift: ".0", 115 stdFracSecond0 | 2<<stdArgShift: ".00", 116 stdFracSecond0 | 3<<stdArgShift: ".000", 117 stdFracSecond0 | 4<<stdArgShift: ".0000", 118 stdFracSecond0 | 5<<stdArgShift: ".00000", 119 stdFracSecond0 | 6<<stdArgShift: ".000000", 120 stdFracSecond0 | 7<<stdArgShift: ".0000000", 121 stdFracSecond0 | 8<<stdArgShift: ".00000000", 122 stdFracSecond0 | 9<<stdArgShift: ".000000000", 123 stdFracSecond9 | 1<<stdArgShift: ".9", 124 stdFracSecond9 | 2<<stdArgShift: ".99", 125 stdFracSecond9 | 3<<stdArgShift: ".999", 126 stdFracSecond9 | 4<<stdArgShift: ".9999", 127 stdFracSecond9 | 5<<stdArgShift: ".99999", 128 stdFracSecond9 | 6<<stdArgShift: ".999999", 129 stdFracSecond9 | 7<<stdArgShift: ".9999999", 130 stdFracSecond9 | 8<<stdArgShift: ".99999999", 131 stdFracSecond9 | 9<<stdArgShift: ".999999999", 132} 133 134var Quote = quote 135 136var AppendInt = appendInt 137var AppendFormatAny = Time.appendFormat 138var AppendFormatRFC3339 = Time.appendFormatRFC3339 139var ParseAny = parse 140var ParseRFC3339 = parseRFC3339[string] 141