1>. 时间向下格式化成五分钟的倍数,返回时间字符串格式。比如:t =2018-05-04 14:08:22
-> "201805041405"
func FloorFiveMinute(t time.Time) string {
m := t.Minute()
m -= m % 5
mStr := strconv.Itoa(m)
mStr = strings.Repeat("0", 2-len(mStr)) + mStr
return t.Format("2006010215") + mStr
}
2>. 时间向下格式化成五分钟的倍数。比如:t = 2018-05-04 14:12:26
-> 2018-05-04 14:12:00
func FloorFiveMinuteTime(t time.Time) time.Time {
s := FloorFiveMinute(t) //引用 1>. 里的格式化时间函数
ret, err := time.Parse("200601021504", s)
if err != nil {
panic(err)
}
return ret
}
3>. 获取传入时间的零点以及传入时间前一天的零点。比如:t = 2018-05-04 14:20:22
-> start = 2018-05-03 00:00:00
,end = 2018-05-04 00:00:00
func GetDayBeforeTime(t time.Time) (time.Time, time.Time) {
y, m, d := t.Date()
start := time.Date(y, m, d-1, 0, 0, 0, 0, time.Local)
end := time.Date(y, m, d, 0, 0, 0, 0, time.Local)
return start, end
}
4>. 把一个 map[string][]int 类型的map Json序列化,返回的是一个 map[string]string 类型的map,这是返回的map中,值是Json序列化后的string类型。比如:data = map["Sixah" : [1, 2, 1, 3, 1, 4 ]] -> map["Sixah" : {"1, 2, 1, 3, 1, 4"}]
func FomatJson(data map[string][]int) map[string]string {
result := make(map[string]string)
for str, val := range data {
value, err := json.Marshal(val)
if err != nil {
return nil
}
result[str] = string(value)
}
return result
}
5>. 字符串数组去重、去空。需要注意的是,在传入数组a之前,需要使用sort包中的sort.Strings(a []type)函数排序处理一下。比如:a = []string{"aa", "aa", "bb", "bb", " ", "cc"} -> [ ]string{"aa", "bb", "cc"}
func RemoveDuplicatesAndEmpty(a [ ]string) [ ]string {
a_len := len(a)
var ret []string
for i := 0; i < a_len; i++ {
if (i > 0 && a[i-1] == a[i]) || len(a[i]) == 0 {
continue
}
ret = append(ret, a[i])
}
return ret
}
6>. Redis数据库不支持Sql语句,属于NoSql、键值对key-value类型的数据库,我们在使用过程中可能会需要模糊查询key,尽管不支持Sql语句,但是Redis也提供了scan用来完成模糊查询的功能,具体原理可以去查Google或者Baidu,下面是实现的代码:
{
var b uint64
var a []string
for {
var aa []string
var err error
aa, b, err = ftredis.Client.Scan(b, "stat*", 1000).Result()
if err != nil {
return a
}
a = append(a, aa...)
if b == 0 {
break
}
}
}
7>. 将两个相同类型,相同key的map合并成一个map。比如:a = map["Sixah" : [1, 2, 3, 4, 5]] , b = map["Sixah" : [6, 7, 8, 9, 0]] -> c = map["Sixah" : [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]]
func MergeMap( a map[string][]int, b map[string][]int ) map[string][]int {
c := make(map[string][]int)
for k,v := range b {
for k1, v1 := range a {
if k1 == k {
i := len(v)
j := 0
for j < i {
v1 = append(v1, v[j])
j++
}
c[k1] = v1
}
}
}
return c
}
网友评论