Go-一些简单的类型转换及处理

package mygo

import (
	"bytes"
	"math"
	"reflect"
	"strconv"
	"time"
)

/*[]string for string*/
func ByteString(p []string) string {
	var resu string
	for _, q := range p {
		resu = q
	}
	return resu
}

//结构体转为map
func StructToMap(obj interface{}) map[string]interface{} {
	t := reflect.TypeOf(obj)
	v := reflect.ValueOf(obj)

	var data = make(map[string]interface{})
	for i := 0; i < t.NumField(); i++ {
		data[t.Field(i).Name] = v.Field(i).Interface()
	}
	return data
}

//float小数位
func GetAdsStatisCount(num1 int64, num2 int64) float64 {
	var resu float64
	resu = float64(num1) / float64(num2)
	resu = math.Trunc(resu*1e2+0.5) * 1e-2
	return resu
}

func MyGoDateFormate(startTs int64, endTs int64) []string {
	timeLayout := "2006-01-02"           //转化所需模板
	loc, _ := time.LoadLocation("Local") //重要:获取时区
	var buf bytes.Buffer

	startTsTime := time.Unix(startTs/1e3, 0).Format(timeLayout)
	endTsTime := time.Unix(endTs/1e3, 0).Format(timeLayout)

	var adsDateList []string
	startTime, _ := time.ParseInLocation(timeLayout, startTsTime, loc) //使用模板在对应时区转化为time.time类型
	endTime, _ := time.ParseInLocation(timeLayout, endTsTime, loc)

	subDate := time.Time.Sub(endTime, startTime).Hours()

	subDay := int(subDate / 24)

	for i := 0; i <= subDay+1; i++ {
		hour := strconv.Itoa(24 * i)
		buf.WriteString(hour)
		buf.WriteString("h")
		hh, _ := time.ParseDuration(buf.String())
		buf.Reset()
		startSum := startTime.Add(hh)
		startSr := startSum.Unix()                              //转化为时间戳 类型是int64
		startTimeSr := time.Unix(startSr, 0).Format(timeLayout) //设置时间戳 使用模板格式化为日期字符串
		adsDateList = append(adsDateList, startTimeSr)
	}
	return adsDateList
}

//时间戳转换为日期输出
func MyGoDateFormateUnix(timestamp int64) string {
	timeLayout := "2006-01-02" //转化所需模板
	tampTimeSr := time.Unix(timestamp/1e3, 0).Format(timeLayout)
	return tampTimeSr
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Swxctx

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值