-
Notifications
You must be signed in to change notification settings - Fork 0
/
tempo.go
144 lines (125 loc) · 5.23 KB
/
tempo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package gobrtempo
import (
"strings"
"time"
)
//LocalizacaoBrasil representa a localizacao para data da capital do Brasil (Brasilia = Sao_Paulo pelo banco de dados IANA Time Zone)
//Detalhes: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
var LocalizacaoBrasil *time.Location
const (
//FormatoBrasileiroData representa data no formato mais popular no Brasil
FormatoBrasileiroData = "02/01/2006"
//FormatoAmericanoData representa data no formato mais popular Americano
FormatoAmericanoData = "1/2/06"
//FormatoBrasileiroHora representa a hora no formato mais popular no Brasil
FormatoBrasileiroHora = "15:04:05"
//FormatoBrasileiroDataHora representa data e hora no formato mais popular no Brasil
FormatoBrasileiroDataHora = "02/01/2006 15:04:05"
//FormatoMySQLData representa data e hora no formato padrão do MySQL
FormatoMySQLData = "2006-01-02 15:04:05"
//FormatoMySQLSomenteData representa data no formato padrão do MySQL
FormatoMySQLSomenteData = "2006-01-02"
)
func init() {
LocalizacaoBrasil, _ = time.LoadLocation("America/Sao_Paulo")
}
//DataFormatoBrasileiroParaTime - de uma data em formato brasileiro (dd/mm/aaaa) para time do Go
func DataFormatoBrasileiroParaTime(dataEmFormatoBrasileiro string) (tempo time.Time, err error) {
tempo, err = time.ParseInLocation(FormatoBrasileiroData, dataEmFormatoBrasileiro, LocalizacaoBrasil)
return
}
//DataFormatoAmericanoParaTime - de uma data em formato americano (mm/dd/aaaa) para time do Go
func DataFormatoAmericanoParaTime(dataEmFormatoAmericano string) (tempo time.Time, err error) {
tempo, err = time.ParseInLocation(FormatoAmericanoData, dataEmFormatoAmericano, LocalizacaoBrasil)
return
}
//DataFormatoMySQLParaTime - de uma data em formato de data padrão do MySQL brasileiro (YYYY-MM-DD HH:MM:SS) para time do Go
func DataFormatoMySQLParaTime(dataEmFormatoMySQL string) (tempo time.Time, err error) {
tempo, err = time.ParseInLocation(FormatoMySQLData, dataEmFormatoMySQL, LocalizacaoBrasil)
if err != nil {
return
}
return
}
//TimeParaDataFormatoBrasileiro - de um time em Go para o formato brasileiro (dd/mm/aaaa)
func TimeParaDataFormatoBrasileiro(tempo time.Time) (dataEmFormatoBrasileiro string) {
dataEmFormatoBrasileiro = tempo.Format(FormatoBrasileiroData)
return
}
//TimeParaHoraFormatoBrasileiro - de um time em Go para o formato brasileiro (dd/mm/aaaa)
func TimeParaHoraFormatoBrasileiro(tempo time.Time) (horaEmFormatoBrasileiro string) {
horaEmFormatoBrasileiro = tempo.Format(FormatoBrasileiroHora)
return
}
//TimeParaDataHoraFormatoBrasileiro - de um time em Go para o formato brasileiro (dd/mm/aaaa hh:mm:ss)
func TimeParaDataHoraFormatoBrasileiro(tempo time.Time) (dataEmFormatoBrasileiro string) {
dataEmFormatoBrasileiro = tempo.Format(FormatoBrasileiroDataHora)
return
}
//TimeParaDataHoraFormatoMySQL - de um time em Go para o formato MySQL (aaaa-mm-dd hh:mm:ss)
func TimeParaDataHoraFormatoMySQL(tempo time.Time) (dataEmFormatoMySQL string) {
dataEmFormatoMySQL = tempo.Format(FormatoMySQLData)
return
}
//TimeParaDataFormatoMySQL - de um time em Go para o formato MySQL (aaaa-mm-dd)
func TimeParaDataFormatoMySQL(tempo time.Time) (dataEmFormatoMySQL string) {
dataEmFormatoMySQL = tempo.Format(FormatoMySQLSomenteData)
return
}
//Agora - obtem a hora atual do sistema no time-zone de SaoPaulo/Brasilia e retorna a hora
func Agora() (tempo string) {
agora := time.Now().In(LocalizacaoBrasil)
tempo = TimeParaHoraFormatoBrasileiro(agora)
return
}
//Hoje - obtem a data atual do sistema no time-zone de SaoPaulo/Brasilia e retorna a data
func Hoje() (tempo string) {
agora := time.Now().In(LocalizacaoBrasil)
tempo = TimeParaDataFormatoBrasileiro(agora)
return
}
//AgoraDataEHora - obtem a data e hora atual do sistema no time-zone de SaoPaulo/Brasilia e retorna data e hora
func AgoraDataEHora() (tempo string) {
agora := time.Now().In(LocalizacaoBrasil)
tempo = TimeParaDataHoraFormatoBrasileiro(agora)
return
}
//AgoraDataEHoraEmTime - obtem a data e hora atual do sistema no time-zone de SaoPaulo/Brasilia e retorna o time
func AgoraDataEHoraEmTime() (tempo time.Time) {
tempo = time.Now().In(LocalizacaoBrasil)
return
}
//AgoraDataEHoraParaFormatoMySQL - obtem a data e hora atual do sistema no time-zone de SaoPaulo/Brasilia e retorna data e hora no formato MySQL
func AgoraDataEHoraParaFormatoMySQL() (tempo string, err error) {
agora := time.Now().In(LocalizacaoBrasil)
tempo = TimeParaDataHoraFormatoMySQL(agora)
return
}
//ConverteStringDataEmFormatoBrasileiroParaMySQL converte uma string de data 25/12/2010 para formato MySQL 2010-12-25
func ConverteStringDataEmFormatoBrasileiroParaMySQL(data string) (dataSQL string, err error) {
err = nil
if len(strings.TrimSpace(data)) < 6 {
dataSQL = ""
return
}
tmpData, err := DataFormatoBrasileiroParaTime(data)
if err != nil {
return
}
dataSQL = TimeParaDataHoraFormatoMySQL(tmpData)
return
}
//ConverteStringDataEmFormatoAmericanoParaMySQL converte uma string de data 6/28/2018 para formato MySQL 2018-06-28
func ConverteStringDataEmFormatoAmericanoParaMySQL(data string) (dataSQL string, err error) {
err = nil
if len(strings.TrimSpace(data)) < 6 {
dataSQL = ""
return
}
tmpData, err := DataFormatoAmericanoParaTime(data)
if err != nil {
return
}
dataSQL = TimeParaDataHoraFormatoMySQL(tmpData)
return
}