gob/datetime/const.go

258 lines
10 KiB
Go
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package datetime
import (
"time"
)
var (
// Fuseau horaire par défaut
DefaultTZ = time.Local
// Jours de la semaine (format court)
shortDays = []string{
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
}
// Jours de la semaine (format long)
longDays = []string{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
}
// Mois (format court)
shortMonths = []string{
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
}
// Mois (format long)
longMonths = []string{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
}
formatters = map[rune]func(time.Time) string{
// Jour
'j': format_j, // Jour du mois sans les 0 initiaux (1-31)
'd': format_d, // Jour du mois, sur deux chiffres (avec un 0 initial) (01-31)
'N': format_N, // Représentation numérique ISO 8601 du jour de la semaine (1-7)
'w': format_w, // Jour de la semaine au format numérique (0-6)
'z': format_z, // Jour de lannée (0-365)
'D': format_D, // Jour de la semaine, en 3 lettres (Mon-Sun)
'l': format_l, // Jour de la semaine, textuel, version longue (Monday-Sunday)
// Semaine
'W': format_W, // N° de semaine dans lannée ISO 8601, les semaines commencent le lundi (0-53)
// Mois
'n': format_n, // Mois sans les 0 initiaux (1-12)
'm': format_m, // Mois au format numérique, avec 0 initiaux (01-12)
't': format_t, // Nombre de jours dans le mois (28-31)
'M': format_M, // Mois, en trois lettres (Jan-Dec)
'F': format_F, // Mois, textuel, version longue (January-December)
// Année
'y': format_y, // Année sur 2 chiffres (Exemples : 99 ou 03)
'Y': format_Y, // Année sur au moins 4 chiffres, avec - pour les années av. J.-C. (Exemples : -0055, 0787, 1999, 2003, 10191)
'L': format_L, // Est ce que lannée est bissextile (1 si bissextile, 0 sinon)
// Heure
'a': format_a, // Ante meridiem et Post meridiem en minuscules (am ou pm)
'A': format_A, // Ante meridiem et Post meridiem en majuscules (AM ou PM)
'B': format_B, // Heure Internet Swatch (000-999)
'g': format_g, // Heure, au format 12h, sans les 0 initiaux (1-12)
'G': format_G, // Heure, au format 24h, sans les 0 initiaux (0-23)
'h': format_h, // Heure, au format 12h, avec les 0 initiaux (01-12)
'H': format_H, // Heure, au format 24h, avec les 0 initiaux (00-23)
'i': format_i, // Minutes avec les 0 initiaux (00-59)
's': format_s, // Secondes avec les 0 initiaux (00-59)
'v': format_v, // Nillisecondes avec les 0 initiaux (000-999)
'u': format_u, // Microsecondes avec les 0 initiaux (000000-999999)
// Fuseau horaire
'T': format_T, // Abréviation du fuseau horaire, si connu; sinon décalage depuis GMT (Exemples : EST, MDT, +05)
'e': format_e, // Lidentifiant du fuseau horaire (Exemples : UTC, GMT, Atlantic/Azores)
'I': format_I, // Lheure dété est activée ou pas (1 si oui, 0 sinon)
'O': format_O, // Différence dheures avec lheure de Greenwich (GMT), sans deux-points entre les heures et les minutes (Exemple : +0200)
'P': format_P, // Différence dheures avec lheure de Greenwich (GMT), avec deux-points entre les heures et les minutes (Exemple : +02:00)
'p': format_p, // Identique à P, mais retourne Z au lieu de +00:00
'Z': format_Z, // Décalage horaire en secondes. Le décalage des zones à louest de la zone UTC est négatif, et à lest, il est positif.(-43200 à 50400)
// Date et heure complète
'c': format_c, // Date au format ISO 8601 (2004-02-12T15:19:21+00:00)
'r': format_r, // Date au format RFC 5322 (Thu, 21 Dec 2000 16:01:070200)
'U': format_U, // Secondes depuis lépoque Unix (1er Janvier 1970, 0h00 00s GMT)
}
parsers = map[rune]string{
// Jours
'j': "2", // Jour du mois sans les 0 initiaux (1-31)
'd': "02", // Jour du mois, sur deux chiffres (avec un 0 initial) (01-31)
'D': "Mon", // Jour de la semaine, en 3 lettres (Mon-Sun)
'l': "Monday", // Jour de la semaine, textuel, version longue (Monday-Sunday)
// Mois
'n': "1", // Mois sans les 0 initiaux (1-12)
'm': "01", // Mois au format numérique, avec 0 initiaux (01-12)
'M': "Jan", // Mois, en trois lettres (Jan-Dec)
'F': "January", // Mois, textuel, version longue (January-December)
// Année
'y': "06", // Année sur 2 chiffres (Exemples : 99 ou 03)
'Y': "2006", // Année sur au moins 4 chiffres, avec - pour les années av. J.-C. (Exemples : -0055, 0787, 1999, 2003, 10191)
// Heure
'a': "pm", // Ante meridiem et Post meridiem en minuscules (am ou pm)
'A': "PM", // Ante meridiem et Post meridiem en majuscules (AM ou PM)
'g': "3", // Heure, au format 12h, sans les 0 initiaux (1-12)
'h': "03", // Heure, au format 12h, avec les 0 initiaux (01-12)
'H': "15", // Heure, au format 24h, avec les 0 initiaux (00-23)
'i': "04", // Minutes avec les 0 initiaux (00-59)
's': "05", // Secondes avec les 0 initiaux (00-59)
// Fuseau horaire
'T': "MST", // Abréviation du fuseau horaire, si connu; sinon décalage depuis GMT (Exemples : EST, MDT, +05)
'O': "-0700", // Différence dheures avec lheure de Greenwich (GMT), sans deux-points entre les heures et les minutes (Exemple : +0200)
'P': "-07:00", // Différence dheures avec lheure de Greenwich (GMT), avec deux-points entre les heures et les minutes (Exemple : +02:00)
// Date et heure complète
'c': "2006-01-02T15:04:05-07:00", // Date au format ISO 8601 (2004-02-12T15:19:21+00:00)
'r': "Thu, 21 Dec 2000 16:01:07 +0200", // Date au format RFC 5322 (Thu, 21 Dec 2000 16:01:070200)
}
layouts = []string{
DayDateTimeLayout,
DateTimeLayout, DateTimeNanoLayout, ShortDateTimeLayout, ShortDateTimeNanoLayout,
DateLayout, DateNanoLayout, ShortDateLayout, ShortDateNanoLayout,
ISO8601Layout, ISO8601NanoLayout,
RFC822Layout, RFC822ZLayout, RFC850Layout, RFC1123Layout, RFC1123ZLayout, RFC3339Layout, RFC3339NanoLayout, RFC1036Layout, RFC7231Layout,
KitchenLayout,
CookieLayout,
ANSICLayout,
UnixDateLayout,
RubyDateLayout,
"2006",
"2006-1", "2006-1-2", "2006-1-2 15", "2006-1-2 15:4", "2006-1-2 15:4:5", "2006-1-2 15:4:5.999999999",
"2006.1", "2006.1.2", "2006.1.2 15", "2006.1.2 15:4", "2006.1.2 15:4:5", "2006.1.2 15:4:5.999999999",
"2006/1", "2006/1/2", "2006/1/2 15", "2006/1/2 15:4", "2006/1/2 15:4:5", "2006/1/2 15:4:5.999999999",
"2006-01-02 15:04:05PM MST", "2006-01-02 15:04:05.999999999PM MST", "2006-1-2 15:4:5PM MST", "2006-1-2 15:4:5.999999999PM MST",
"2006-01-02 15:04:05 PM MST", "2006-01-02 15:04:05.999999999 PM MST", "2006-1-2 15:4:5 PM MST", "2006-1-2 15:4:5.999999999 PM MST",
"1/2/2006", "1/2/2006 15", "1/2/2006 15:4", "1/2/2006 15:4:5", "1/2/2006 15:4:5.999999999",
"2006-1-2 15:4:5 -0700 MST", "2006-1-2 15:4:5.999999999 -0700 MST",
"2006-1-2T15:4:5Z07", "2006-1-2T15:4:5.999999999Z07",
"2006-1-2T15:4:5Z07:00", "2006-1-2T15:4:5.999999999Z07:00",
"2006-1-2T15:4:5-07:00", "2006-1-2T15:4:5.999999999-07:00",
"20060102150405-07:00", "20060102150405.999999999-07:00",
"20060102150405Z07", "20060102150405.999999999Z07",
"20060102150405Z07:00", "20060102150405.999999999Z07:00",
}
)
const (
// Unités de durée
Nanosecond = time.Nanosecond
Microsecond = time.Microsecond
Millisecond = time.Millisecond
Second = time.Second
Minute = time.Minute
Hour = time.Hour
Day = time.Hour * 24
Week = Day * 7
MonthsPerYear = 12
DaysPerWeek = 7
HoursPerDay = 24
HoursPerWeek = HoursPerDay * DaysPerWeek
MinutesPerHour = 60
MinutesPerDay = MinutesPerHour * HoursPerDay
MinutesPerWeek = MinutesPerHour * HoursPerWeek
SecondsPerMinute = 60
SecondsPerHour = SecondsPerMinute * MinutesPerHour
SecondsPerDay = SecondsPerMinute * MinutesPerDay
SecondsPerWeek = SecondsPerMinute * MinutesPerWeek
// Erreurs
errInvalidTZ = "Invalid timezone %q"
errInvalidValue = "Cannot parse string %q as datetime, please make sure the value is valid"
// Quelques layouts
ANSICLayout = time.ANSIC
UnixDateLayout = time.UnixDate
RubyDateLayout = time.RubyDate
RFC822Layout = time.RFC822
RFC822ZLayout = time.RFC822Z
RFC850Layout = time.RFC850
RFC1123Layout = time.RFC1123
RFC1123ZLayout = time.RFC1123Z
RssLayout = time.RFC1123Z
KitchenLayout = time.Kitchen
RFC2822Layout = time.RFC1123Z
CookieLayout = "Monday, 02-Jan-2006 15:04:05 MST"
RFC3339Layout = "2006-01-02T15:04:05Z07:00"
RFC3339MilliLayout = "2006-01-02T15:04:05.999Z07:00"
RFC3339MicroLayout = "2006-01-02T15:04:05.999999Z07:00"
RFC3339NanoLayout = "2006-01-02T15:04:05.999999999Z07:00"
ISO8601Layout = "2006-01-02T15:04:05-07:00"
ISO8601MilliLayout = "2006-01-02T15:04:05.999-07:00"
ISO8601MicroLayout = "2006-01-02T15:04:05.999999-07:00"
ISO8601NanoLayout = "2006-01-02T15:04:05.999999999-07:00"
RFC1036Layout = "Mon, 02 Jan 06 15:04:05 -0700"
RFC7231Layout = "Mon, 02 Jan 2006 15:04:05 MST"
DayDateTimeLayout = "Mon, Jan 2, 2006 3:04 PM"
DateTimeLayout = "2006-01-02 15:04:05"
DateTimeMilliLayout = "2006-01-02 15:04:05.999"
DateTimeMicroLayout = "2006-01-02 15:04:05.999999"
DateTimeNanoLayout = "2006-01-02 15:04:05.999999999"
ShortDateTimeLayout = "20060102150405"
ShortDateTimeMilliLayout = "20060102150405.999"
ShortDateTimeMicroLayout = "20060102150405.999999"
ShortDateTimeNanoLayout = "20060102150405.999999999"
DateLayout = "2006-01-02"
DateMilliLayout = "2006-01-02.999"
DateMicroLayout = "2006-01-02.999999"
DateNanoLayout = "2006-01-02.999999999"
ShortDateLayout = "20060102"
ShortDateMilliLayout = "20060102.999"
ShortDateMicroLayout = "20060102.999999"
ShortDateNanoLayout = "20060102.999999999"
TimeLayout = "15:04:05"
TimeMilliLayout = "15:04:05.999"
TimeMicroLayout = "15:04:05.999999"
TimeNanoLayout = "15:04:05.999999999"
ShortTimeLayout = "150405"
ShortTimeMilliLayout = "150405.999"
ShortTimeMicroLayout = "150405.999999"
ShortTimeNanoLayout = "150405.999999999"
)