1 package gu_IN
2
3 import (
4 "math"
5 "strconv"
6 "time"
7
8 "github.com/go-playground/locales"
9 "github.com/go-playground/locales/currency"
10 )
11
12 type gu_IN struct {
13 locale string
14 pluralsCardinal []locales.PluralRule
15 pluralsOrdinal []locales.PluralRule
16 pluralsRange []locales.PluralRule
17 decimal string
18 group string
19 minus string
20 percent string
21 perMille string
22 timeSeparator string
23 inifinity string
24 currencies []string
25 monthsAbbreviated []string
26 monthsNarrow []string
27 monthsWide []string
28 daysAbbreviated []string
29 daysNarrow []string
30 daysShort []string
31 daysWide []string
32 periodsAbbreviated []string
33 periodsNarrow []string
34 periodsShort []string
35 periodsWide []string
36 erasAbbreviated []string
37 erasNarrow []string
38 erasWide []string
39 timezones map[string]string
40 }
41
42
43 func New() locales.Translator {
44 return &gu_IN{
45 locale: "gu_IN",
46 pluralsCardinal: []locales.PluralRule{2, 6},
47 pluralsOrdinal: []locales.PluralRule{2, 3, 4, 5, 6},
48 pluralsRange: []locales.PluralRule{2, 6},
49 decimal: ".",
50 group: ",",
51 minus: "-",
52 percent: "%",
53 perMille: "‰",
54 timeSeparator: ":",
55 inifinity: "∞",
56 currencies: []string{"ADP", "AED", "AFA", "AFN", "ALK", "ALL", "AMD", "ANG", "AOA", "AOK", "AON", "AOR", "ARA", "ARL", "ARM", "ARP", "ARS", "ATS", "AUD", "AWG", "AZM", "AZN", "BAD", "BAM", "BAN", "BBD", "BDT", "BEC", "BEF", "BEL", "BGL", "BGM", "BGN", "BGO", "BHD", "BIF", "BMD", "BND", "BOB", "BOL", "BOP", "BOV", "BRB", "BRC", "BRE", "BRL", "BRN", "BRR", "BRZ", "BSD", "BTN", "BUK", "BWP", "BYB", "BYN", "BYR", "BZD", "CAD", "CDF", "CHE", "CHF", "CHW", "CLE", "CLF", "CLP", "CNH", "CNX", "CNY", "COP", "COU", "CRC", "CSD", "CSK", "CUC", "CUP", "CVE", "CYP", "CZK", "DDM", "DEM", "DJF", "DKK", "DOP", "DZD", "ECS", "ECV", "EEK", "EGP", "ERN", "ESA", "ESB", "ESP", "ETB", "EUR", "FIM", "FJD", "FKP", "FRF", "GBP", "GEK", "GEL", "GHC", "GHS", "GIP", "GMD", "GNF", "GNS", "GQE", "GRD", "GTQ", "GWE", "GWP", "GYD", "HKD", "HNL", "HRD", "HRK", "HTG", "HUF", "IDR", "IEP", "ILP", "ILR", "ILS", "INR", "IQD", "IRR", "ISJ", "ISK", "ITL", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRH", "KRO", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LTT", "LUC", "LUF", "LUL", "LVL", "LVR", "LYD", "MAD", "MAF", "MCF", "MDC", "MDL", "MGA", "MGF", "MKD", "MKN", "MLF", "MMK", "MNT", "MOP", "MRO", "MRU", "MTL", "MTP", "MUR", "MVP", "MVR", "MWK", "MXN", "MXP", "MXV", "MYR", "MZE", "MZM", "MZN", "NAD", "NGN", "NIC", "NIO", "NLG", "NOK", "NPR", "NZD", "OMR", "PAB", "PEI", "PEN", "PES", "PGK", "PHP", "PKR", "PLN", "PLZ", "PTE", "PYG", "QAR", "RHD", "ROL", "RON", "RSD", "RUB", "RUR", "RWF", "SAR", "SBD", "SCR", "SDD", "SDG", "SDP", "SEK", "SGD", "SHP", "SIT", "SKK", "SLL", "SOS", "SRD", "SRG", "SSP", "STD", "STN", "SUR", "SVC", "SYP", "SZL", "THB", "TJR", "TJS", "TMM", "TMT", "TND", "TOP", "TPE", "TRL", "TRY", "TTD", "TWD", "TZS", "UAH", "UAK", "UGS", "UGX", "USD", "USN", "USS", "UYI", "UYP", "UYU", "UYW", "UZS", "VEB", "VEF", "VES", "VND", "VNN", "VUV", "WST", "XAF", "XAG", "XAU", "XBA", "XBB", "XBC", "XBD", "XCD", "XDR", "XEU", "XFO", "XFU", "XOF", "XPD", "XPF", "XPT", "XRE", "XSU", "XTS", "XUA", "XXX", "YDD", "YER", "YUD", "YUM", "YUN", "YUR", "ZAL", "ZAR", "ZMK", "ZMW", "ZRN", "ZRZ", "ZWD", "ZWL", "ZWR"},
57 monthsAbbreviated: []string{"", "જાન્યુ", "ફેબ્રુ", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટે", "ઑક્ટો", "નવે", "ડિસે"},
58 monthsNarrow: []string{"", "જા", "ફે", "મા", "એ", "મે", "જૂ", "જુ", "ઑ", "સ", "ઑ", "ન", "ડિ"},
59 monthsWide: []string{"", "જાન્યુઆરી", "ફેબ્રુઆરી", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટેમ્બર", "ઑક્ટોબર", "નવેમ્બર", "ડિસેમ્બર"},
60 daysAbbreviated: []string{"રવિ", "સોમ", "મંગળ", "બુધ", "ગુરુ", "શુક્ર", "શનિ"},
61 daysNarrow: []string{"ર", "સો", "મં", "બુ", "ગુ", "શુ", "શ"},
62 daysShort: []string{"ર", "સો", "મં", "બુ", "ગુ", "શુ", "શ"},
63 daysWide: []string{"રવિવાર", "સોમવાર", "મંગળવાર", "બુધવાર", "ગુરુવાર", "શુક્રવાર", "શનિવાર"},
64 periodsAbbreviated: []string{"AM", "PM"},
65 periodsNarrow: []string{"AM", "PM"},
66 periodsWide: []string{"AM", "PM"},
67 erasAbbreviated: []string{"ઈ.સ.પૂર્વે", "ઈ.સ."},
68 erasNarrow: []string{"ઇ સ પુ", "ઇસ"},
69 erasWide: []string{"ઈસવીસન પૂર્વે", "ઇસવીસન"},
70 timezones: map[string]string{"ACDT": "ઓસ્ટ્રેલિયન કેન્દ્રીય દિવસ સમય", "ACST": "ઑસ્ટ્રેલિયન કેન્દ્રીય માનક સમય", "ACWDT": "ઓસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી દિવસ સમય", "ACWST": "ઑસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી માનક સમય", "ADT": "એટલાન્ટિક દિવસ સમય", "AEDT": "ઓસ્ટ્રેલિયન પૂર્વીય દિવસ સમય", "AEST": "ઑસ્ટ્રેલિયન પૂર્વીય માનક સમય", "AKDT": "અલાસ્કા દિવસ સમય", "AKST": "અલાસ્કા માનક સમય", "ARST": "આર્જેન્ટીના ગ્રીષ્મ સમય", "ART": "આર્જેન્ટીના માનક સમય", "AST": "એટલાન્ટિક માનક સમય", "AWDT": "ઓસ્ટ્રેલિયન પશ્ચિમી દિવસ સમય", "AWST": "ઑસ્ટ્રેલિયન પશ્ચિમી માનક સમય", "BOT": "બોલિવિયા સમય", "BT": "ભૂટાન સમય", "CAT": "મધ્ય આફ્રિકા સમય", "CDT": "ઉત્તર અમેરિકન કેન્દ્રીય દિવસ સમય", "CHADT": "ચેતહામ દિવસ સમય", "CHAST": "ચેતહામ માનક સમય", "CLST": "ચિલી ગ્રીષ્મ સમય", "CLT": "ચિલી માનક સમય", "COST": "કોલમ્બિયા ગ્રીષ્મ સમય", "COT": "કોલમ્બિયા માનક સમય", "CST": "ઉત્તર અમેરિકન કેન્દ્રીય માનક સમય", "ChST": "કેમોરો માનક સમય", "EAT": "પૂર્વ આફ્રિકા સમય", "ECT": "એક્વાડોર સમય", "EDT": "ઉત્તર અમેરિકન પૂર્વી દિવસ સમય", "EST": "ઉત્તર અમેરિકન પૂર્વી માનક સમય", "GFT": "ફ્રેંચ ગયાના સમય", "GMT": "ગ્રીનવિચ મધ્યમ સમય", "GST": "ગલ્ફ માનક સમય", "GYT": "ગયાના સમય", "HADT": "હવાઇ-એલ્યુશિઅન દિવસ સમય", "HAST": "હવાઇ-એલ્યુશિઅન માનક સમય", "HAT": "ન્યૂફાઉન્ડલેન્ડ દિવસ સમય", "HECU": "ક્યુબા દિવસ સમય", "HEEG": "પૂર્વ ગ્રીનલેન્ડ ગ્રીષ્મ સમય", "HENOMX": "ઉત્તરપશ્ચિમ મેક્સિકો દિવસ સમય", "HEOG": "પશ્ચિમ ગ્રીનલેન્ડ ગ્રીષ્મ સમય", "HEPM": "સેંટ પીએરી અને મિક્યુલોન દિવસ સમય", "HEPMX": "મેક્સિકન પેસિફિક દિવસ સમય", "HKST": "હોંગ કોંગ ગ્રીષ્મ સમય", "HKT": "હોંગ કોંગ માનક સમય", "HNCU": "ક્યુબા માનક સમય", "HNEG": "પૂર્વ ગ્રીનલેન્ડ માનક સમય", "HNNOMX": "ઉત્તરપશ્ચિમ મેક્સિકો માનક સમય", "HNOG": "પશ્ચિમ ગ્રીનલેન્ડ માનક સમય", "HNPM": "સેંટ પીએરી અને મિક્યુલોન માનક સમય", "HNPMX": "મેક્સિકન પેસિફિક માનક સમય", "HNT": "ન્યૂફાઉન્ડલેન્ડ માનક સમય", "IST": "ભારતીય માનક સમય", "JDT": "જાપાન દિવસ સમય", "JST": "જાપાન માનક સમય", "LHDT": "લોર્ડ હોવ દિવસ સમય", "LHST": "લોર્ડ હોવ માનક સમય", "MDT": "ઉત્તર અમેરિકન માઉન્ટન દિવસ સમય", "MESZ": "મધ્ય યુરોપિયન ગ્રીષ્મ સમય", "MEZ": "મધ્ય યુરોપિયન માનક સમય", "MST": "ઉત્તર અમેરિકન માઉન્ટન માનક સમય", "MYT": "મલેશિયા સમય", "NZDT": "ન્યુઝીલેન્ડ દિવસ સમય", "NZST": "ન્યુઝીલેન્ડ માનક સમય", "OESZ": "પૂર્વી યુરોપિયન ગ્રીષ્મ સમય", "OEZ": "પૂર્વી યુરોપિયન માનક સમય", "PDT": "ઉત્તર અમેરિકન પેસિફિક દિવસ સમય", "PST": "ઉત્તર અમેરિકન પેસિફિક માનક સમય", "SAST": "દક્ષિણ આફ્રિકા માનક સમય", "SGT": "સિંગાપુર માનક સમય", "SRT": "સુરીનામ સમય", "TMST": "તુર્કમેનિસ્તાન ગ્રીષ્મ સમય", "TMT": "તુર્કમેનિસ્તાન માનક સમય", "UYST": "ઉરુગ્વે ગ્રીષ્મ સમય", "UYT": "ઉરુગ્વે માનક સમય", "VET": "વેનેઝુએલા સમય", "WARST": "પશ્ચિમી આર્જેન્ટીના ગ્રીષ્મ સમય", "WART": "પશ્ચિમી આર્જેન્ટીના માનક સમય", "WAST": "પશ્ચિમ આફ્રિકા ગ્રીષ્મ સમય", "WAT": "પશ્ચિમ આફ્રિકા માનક સમય", "WESZ": "પશ્ચિમી યુરોપિયન ગ્રીષ્મ સમય", "WEZ": "પશ્ચિમી યુરોપિયન માનક સમય", "WIB": "પશ્ચિમી ઇન્ડોનેશિયા સમય", "WIT": "પૂર્વીય ઇન્ડોનેશિયા સમય", "WITA": "મધ્ય ઇન્ડોનેશિયા સમય", "∅∅∅": "એઝોર્સ ગ્રીષ્મ સમય"},
71 }
72 }
73
74
75 func (gu *gu_IN) Locale() string {
76 return gu.locale
77 }
78
79
80 func (gu *gu_IN) PluralsCardinal() []locales.PluralRule {
81 return gu.pluralsCardinal
82 }
83
84
85 func (gu *gu_IN) PluralsOrdinal() []locales.PluralRule {
86 return gu.pluralsOrdinal
87 }
88
89
90 func (gu *gu_IN) PluralsRange() []locales.PluralRule {
91 return gu.pluralsRange
92 }
93
94
95 func (gu *gu_IN) CardinalPluralRule(num float64, v uint64) locales.PluralRule {
96
97 n := math.Abs(num)
98 i := int64(n)
99
100 if (i == 0) || (n == 1) {
101 return locales.PluralRuleOne
102 }
103
104 return locales.PluralRuleOther
105 }
106
107
108 func (gu *gu_IN) OrdinalPluralRule(num float64, v uint64) locales.PluralRule {
109
110 n := math.Abs(num)
111
112 if n == 1 {
113 return locales.PluralRuleOne
114 } else if n == 2 || n == 3 {
115 return locales.PluralRuleTwo
116 } else if n == 4 {
117 return locales.PluralRuleFew
118 } else if n == 6 {
119 return locales.PluralRuleMany
120 }
121
122 return locales.PluralRuleOther
123 }
124
125
126 func (gu *gu_IN) RangePluralRule(num1 float64, v1 uint64, num2 float64, v2 uint64) locales.PluralRule {
127
128 start := gu.CardinalPluralRule(num1, v1)
129 end := gu.CardinalPluralRule(num2, v2)
130
131 if start == locales.PluralRuleOne && end == locales.PluralRuleOne {
132 return locales.PluralRuleOne
133 } else if start == locales.PluralRuleOne && end == locales.PluralRuleOther {
134 return locales.PluralRuleOther
135 }
136
137 return locales.PluralRuleOther
138
139 }
140
141
142 func (gu *gu_IN) MonthAbbreviated(month time.Month) string {
143 return gu.monthsAbbreviated[month]
144 }
145
146
147 func (gu *gu_IN) MonthsAbbreviated() []string {
148 return gu.monthsAbbreviated[1:]
149 }
150
151
152 func (gu *gu_IN) MonthNarrow(month time.Month) string {
153 return gu.monthsNarrow[month]
154 }
155
156
157 func (gu *gu_IN) MonthsNarrow() []string {
158 return gu.monthsNarrow[1:]
159 }
160
161
162 func (gu *gu_IN) MonthWide(month time.Month) string {
163 return gu.monthsWide[month]
164 }
165
166
167 func (gu *gu_IN) MonthsWide() []string {
168 return gu.monthsWide[1:]
169 }
170
171
172 func (gu *gu_IN) WeekdayAbbreviated(weekday time.Weekday) string {
173 return gu.daysAbbreviated[weekday]
174 }
175
176
177 func (gu *gu_IN) WeekdaysAbbreviated() []string {
178 return gu.daysAbbreviated
179 }
180
181
182 func (gu *gu_IN) WeekdayNarrow(weekday time.Weekday) string {
183 return gu.daysNarrow[weekday]
184 }
185
186
187 func (gu *gu_IN) WeekdaysNarrow() []string {
188 return gu.daysNarrow
189 }
190
191
192 func (gu *gu_IN) WeekdayShort(weekday time.Weekday) string {
193 return gu.daysShort[weekday]
194 }
195
196
197 func (gu *gu_IN) WeekdaysShort() []string {
198 return gu.daysShort
199 }
200
201
202 func (gu *gu_IN) WeekdayWide(weekday time.Weekday) string {
203 return gu.daysWide[weekday]
204 }
205
206
207 func (gu *gu_IN) WeekdaysWide() []string {
208 return gu.daysWide
209 }
210
211
212 func (gu *gu_IN) Decimal() string {
213 return gu.decimal
214 }
215
216
217 func (gu *gu_IN) Group() string {
218 return gu.group
219 }
220
221
222 func (gu *gu_IN) Minus() string {
223 return gu.minus
224 }
225
226
227 func (gu *gu_IN) FmtNumber(num float64, v uint64) string {
228
229 s := strconv.FormatFloat(math.Abs(num), 'f', int(v), 64)
230 l := len(s) + 2 + 1*len(s[:len(s)-int(v)-1])/3
231 count := 0
232 inWhole := v == 0
233 inSecondary := false
234 groupThreshold := 3
235
236 b := make([]byte, 0, l)
237
238 for i := len(s) - 1; i >= 0; i-- {
239
240 if s[i] == '.' {
241 b = append(b, gu.decimal[0])
242 inWhole = true
243 continue
244 }
245
246 if inWhole {
247
248 if count == groupThreshold {
249 b = append(b, gu.group[0])
250 count = 1
251
252 if !inSecondary {
253 inSecondary = true
254 groupThreshold = 2
255 }
256 } else {
257 count++
258 }
259 }
260
261 b = append(b, s[i])
262 }
263
264 if num < 0 {
265 b = append(b, gu.minus[0])
266 }
267
268
269 for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
270 b[i], b[j] = b[j], b[i]
271 }
272
273 return string(b)
274 }
275
276
277
278 func (gu *gu_IN) FmtPercent(num float64, v uint64) string {
279 s := strconv.FormatFloat(math.Abs(num), 'f', int(v), 64)
280 l := len(s) + 3
281 b := make([]byte, 0, l)
282
283 for i := len(s) - 1; i >= 0; i-- {
284
285 if s[i] == '.' {
286 b = append(b, gu.decimal[0])
287 continue
288 }
289
290 b = append(b, s[i])
291 }
292
293 if num < 0 {
294 b = append(b, gu.minus[0])
295 }
296
297
298 for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
299 b[i], b[j] = b[j], b[i]
300 }
301
302 b = append(b, gu.percent...)
303
304 return string(b)
305 }
306
307
308 func (gu *gu_IN) FmtCurrency(num float64, v uint64, currency currency.Type) string {
309
310 s := strconv.FormatFloat(math.Abs(num), 'f', int(v), 64)
311 symbol := gu.currencies[currency]
312 l := len(s) + len(symbol) + 2 + 1*len(s[:len(s)-int(v)-1])/3
313 count := 0
314 inWhole := v == 0
315 b := make([]byte, 0, l)
316
317 for i := len(s) - 1; i >= 0; i-- {
318
319 if s[i] == '.' {
320 b = append(b, gu.decimal[0])
321 inWhole = true
322 continue
323 }
324
325 if inWhole {
326 if count == 3 {
327 b = append(b, gu.group[0])
328 count = 1
329 } else {
330 count++
331 }
332 }
333
334 b = append(b, s[i])
335 }
336
337 for j := len(symbol) - 1; j >= 0; j-- {
338 b = append(b, symbol[j])
339 }
340
341 if num < 0 {
342 b = append(b, gu.minus[0])
343 }
344
345
346 for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
347 b[i], b[j] = b[j], b[i]
348 }
349
350 if int(v) < 2 {
351
352 if v == 0 {
353 b = append(b, gu.decimal...)
354 }
355
356 for i := 0; i < 2-int(v); i++ {
357 b = append(b, '0')
358 }
359 }
360
361 return string(b)
362 }
363
364
365
366 func (gu *gu_IN) FmtAccounting(num float64, v uint64, currency currency.Type) string {
367
368 s := strconv.FormatFloat(math.Abs(num), 'f', int(v), 64)
369 symbol := gu.currencies[currency]
370 l := len(s) + len(symbol) + 2 + 1*len(s[:len(s)-int(v)-1])/3
371 count := 0
372 inWhole := v == 0
373 b := make([]byte, 0, l)
374
375 for i := len(s) - 1; i >= 0; i-- {
376
377 if s[i] == '.' {
378 b = append(b, gu.decimal[0])
379 inWhole = true
380 continue
381 }
382
383 if inWhole {
384 if count == 3 {
385 b = append(b, gu.group[0])
386 count = 1
387 } else {
388 count++
389 }
390 }
391
392 b = append(b, s[i])
393 }
394
395 if num < 0 {
396
397 for j := len(symbol) - 1; j >= 0; j-- {
398 b = append(b, symbol[j])
399 }
400
401 b = append(b, gu.minus[0])
402
403 } else {
404
405 for j := len(symbol) - 1; j >= 0; j-- {
406 b = append(b, symbol[j])
407 }
408
409 }
410
411
412 for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 {
413 b[i], b[j] = b[j], b[i]
414 }
415
416 if int(v) < 2 {
417
418 if v == 0 {
419 b = append(b, gu.decimal...)
420 }
421
422 for i := 0; i < 2-int(v); i++ {
423 b = append(b, '0')
424 }
425 }
426
427 return string(b)
428 }
429
430
431 func (gu *gu_IN) FmtDateShort(t time.Time) string {
432
433 b := make([]byte, 0, 32)
434
435 b = strconv.AppendInt(b, int64(t.Day()), 10)
436 b = append(b, []byte{0x2f}...)
437 b = strconv.AppendInt(b, int64(t.Month()), 10)
438 b = append(b, []byte{0x2f}...)
439
440 if t.Year() > 9 {
441 b = append(b, strconv.Itoa(t.Year())[2:]...)
442 } else {
443 b = append(b, strconv.Itoa(t.Year())[1:]...)
444 }
445
446 return string(b)
447 }
448
449
450 func (gu *gu_IN) FmtDateMedium(t time.Time) string {
451
452 b := make([]byte, 0, 32)
453
454 b = strconv.AppendInt(b, int64(t.Day()), 10)
455 b = append(b, []byte{0x20}...)
456 b = append(b, gu.monthsAbbreviated[t.Month()]...)
457 b = append(b, []byte{0x2c, 0x20}...)
458
459 if t.Year() > 0 {
460 b = strconv.AppendInt(b, int64(t.Year()), 10)
461 } else {
462 b = strconv.AppendInt(b, int64(-t.Year()), 10)
463 }
464
465 return string(b)
466 }
467
468
469 func (gu *gu_IN) FmtDateLong(t time.Time) string {
470
471 b := make([]byte, 0, 32)
472
473 b = strconv.AppendInt(b, int64(t.Day()), 10)
474 b = append(b, []byte{0x20}...)
475 b = append(b, gu.monthsWide[t.Month()]...)
476 b = append(b, []byte{0x2c, 0x20}...)
477
478 if t.Year() > 0 {
479 b = strconv.AppendInt(b, int64(t.Year()), 10)
480 } else {
481 b = strconv.AppendInt(b, int64(-t.Year()), 10)
482 }
483
484 return string(b)
485 }
486
487
488 func (gu *gu_IN) FmtDateFull(t time.Time) string {
489
490 b := make([]byte, 0, 32)
491
492 b = append(b, gu.daysWide[t.Weekday()]...)
493 b = append(b, []byte{0x2c, 0x20}...)
494 b = strconv.AppendInt(b, int64(t.Day()), 10)
495 b = append(b, []byte{0x20}...)
496 b = append(b, gu.monthsWide[t.Month()]...)
497 b = append(b, []byte{0x2c, 0x20}...)
498
499 if t.Year() > 0 {
500 b = strconv.AppendInt(b, int64(t.Year()), 10)
501 } else {
502 b = strconv.AppendInt(b, int64(-t.Year()), 10)
503 }
504
505 return string(b)
506 }
507
508
509 func (gu *gu_IN) FmtTimeShort(t time.Time) string {
510
511 b := make([]byte, 0, 32)
512
513 h := t.Hour()
514
515 if h > 12 {
516 h -= 12
517 }
518
519 if h < 10 {
520 b = append(b, '0')
521 }
522
523 b = strconv.AppendInt(b, int64(h), 10)
524 b = append(b, gu.timeSeparator...)
525
526 if t.Minute() < 10 {
527 b = append(b, '0')
528 }
529
530 b = strconv.AppendInt(b, int64(t.Minute()), 10)
531 b = append(b, []byte{0x20}...)
532
533 if t.Hour() < 12 {
534 b = append(b, gu.periodsAbbreviated[0]...)
535 } else {
536 b = append(b, gu.periodsAbbreviated[1]...)
537 }
538
539 return string(b)
540 }
541
542
543 func (gu *gu_IN) FmtTimeMedium(t time.Time) string {
544
545 b := make([]byte, 0, 32)
546
547 h := t.Hour()
548
549 if h > 12 {
550 h -= 12
551 }
552
553 if h < 10 {
554 b = append(b, '0')
555 }
556
557 b = strconv.AppendInt(b, int64(h), 10)
558 b = append(b, gu.timeSeparator...)
559
560 if t.Minute() < 10 {
561 b = append(b, '0')
562 }
563
564 b = strconv.AppendInt(b, int64(t.Minute()), 10)
565 b = append(b, gu.timeSeparator...)
566
567 if t.Second() < 10 {
568 b = append(b, '0')
569 }
570
571 b = strconv.AppendInt(b, int64(t.Second()), 10)
572 b = append(b, []byte{0x20}...)
573
574 if t.Hour() < 12 {
575 b = append(b, gu.periodsAbbreviated[0]...)
576 } else {
577 b = append(b, gu.periodsAbbreviated[1]...)
578 }
579
580 return string(b)
581 }
582
583
584 func (gu *gu_IN) FmtTimeLong(t time.Time) string {
585
586 b := make([]byte, 0, 32)
587
588 h := t.Hour()
589
590 if h > 12 {
591 h -= 12
592 }
593
594 if h < 10 {
595 b = append(b, '0')
596 }
597
598 b = strconv.AppendInt(b, int64(h), 10)
599 b = append(b, gu.timeSeparator...)
600
601 if t.Minute() < 10 {
602 b = append(b, '0')
603 }
604
605 b = strconv.AppendInt(b, int64(t.Minute()), 10)
606 b = append(b, gu.timeSeparator...)
607
608 if t.Second() < 10 {
609 b = append(b, '0')
610 }
611
612 b = strconv.AppendInt(b, int64(t.Second()), 10)
613 b = append(b, []byte{0x20}...)
614
615 if t.Hour() < 12 {
616 b = append(b, gu.periodsAbbreviated[0]...)
617 } else {
618 b = append(b, gu.periodsAbbreviated[1]...)
619 }
620
621 b = append(b, []byte{0x20}...)
622
623 tz, _ := t.Zone()
624 b = append(b, tz...)
625
626 return string(b)
627 }
628
629
630 func (gu *gu_IN) FmtTimeFull(t time.Time) string {
631
632 b := make([]byte, 0, 32)
633
634 h := t.Hour()
635
636 if h > 12 {
637 h -= 12
638 }
639
640 if h < 10 {
641 b = append(b, '0')
642 }
643
644 b = strconv.AppendInt(b, int64(h), 10)
645 b = append(b, gu.timeSeparator...)
646
647 if t.Minute() < 10 {
648 b = append(b, '0')
649 }
650
651 b = strconv.AppendInt(b, int64(t.Minute()), 10)
652 b = append(b, gu.timeSeparator...)
653
654 if t.Second() < 10 {
655 b = append(b, '0')
656 }
657
658 b = strconv.AppendInt(b, int64(t.Second()), 10)
659 b = append(b, []byte{0x20}...)
660
661 if t.Hour() < 12 {
662 b = append(b, gu.periodsAbbreviated[0]...)
663 } else {
664 b = append(b, gu.periodsAbbreviated[1]...)
665 }
666
667 b = append(b, []byte{0x20}...)
668
669 tz, _ := t.Zone()
670
671 if btz, ok := gu.timezones[tz]; ok {
672 b = append(b, btz...)
673 } else {
674 b = append(b, tz...)
675 }
676
677 return string(b)
678 }
679
View as plain text