golang时间转换
本文内容纲要:
-1.datetime转换成时间字符串
-2.datetime转换成时间戳
-3.时间戳转换成时间字符串
-4.时间字符串转换成时间戳
-5.时间戳转换成datetime时间
-6.时间字符串转换成时间戳
-7.日期加减操作
1.datetime转换成时间字符串
packagemain
import(
"fmt"
"reflect"
"time"
)
funcmain(){
now:=time.Now()//当前datetime时间
fmt.Println(reflect.TypeOf(now))//打印当前时间的类型
fmt.Println(now)//打印当前时间
fmt.Println("***********************")
t1:=now.Format("2006-01-0215:04:05")//把当前datetime时间转换成时间字符串
fmt.Println(t1)
fmt.Println(reflect.TypeOf(t1))
}
程序执行结果
time.Time
2019-09-1617:51:01.2357834+0800CSTm=+0.004988701
***********************
2019-09-1617:51:01
string
2.datetime转换成时间戳
packagemain
import(
"fmt"
"time"
)
funcparse_datetime_to_timestamp(dtime.Time)int64{
unix_time:=d.Unix()
returnunix_time
}
funcmain(){
now:=time.Now()//当前datetime时间
t1:=parse_datetime_to_timestamp(now)//转换成时间戳
tomorrow:=now.AddDate(0,0,+1)//一天之后的datetime时间
t2:=parse_datetime_to_timestamp(tomorrow)//转换成时间戳
fmt.Println(t1)
fmt.Println(t2)
}
程序执行结果
1568631868
1568718268
3.时间戳转换成时间字符串
packagemain
import(
"fmt"
"time"
)
funcparse_timestamp_to_timestr(tint64,flagint)string{
vartime_strstring
ifflag==1{
time_str=time.Unix(t,0).Format("2006.01.02")
}elseifflag==2{
time_str=time.Unix(t,0).Format("2006-01-0215:04:05")
}elseifflag==3{
time_str=time.Unix(t,0).Format("2006-01-0215:04")
}else{
time_str=time.Unix(t,0).Format("2006-01-02")
}
returntime_str
}
funcmain(){
vart1int64
t1=1567778332
str1:=parse_timestamp_to_timestr(t1,3)
fmt.Println(str1)
}
程序执行结果
2019-09-0621:58
4.时间字符串转换成时间戳
packagemain
import(
"fmt"
"time"
)
funcparse_timestr_to_timestamp(time_strstring,flagint)int64{
vartint64
loc,_:=time.LoadLocation("Local")
ifflag==1{
t1,_:=time.ParseInLocation("2006.01.0215:04:05",time_str,loc)
t=t1.Unix()
}elseifflag==2{
t1,_:=time.ParseInLocation("2006-01-0215:04",time_str,loc)
t=t1.Unix()
}elseifflag==3{
t1,_:=time.ParseInLocation("2006-01-02",time_str,loc)
t=t1.Unix()
}elseifflag==4{
t1,_:=time.ParseInLocation("2006.01.02",time_str,loc)
t=t1.Unix()
}else{
t1,_:=time.ParseInLocation("2006-01-0215:04:05",time_str,loc)
t=t1.Unix()
}
returnt
}
funcmain(){
time_str1:="2019-09-1600:00:00"
time_str2:="2019-09-1615:04"
time_str3:="2019-09-16"
time_str4:="2019.09.18"
t1:=parse_timestr_to_timestamp(time_str1,5)
fmt.Println(t1)
t2:=parse_timestr_to_timestamp(time_str2,2)
fmt.Println(t2)
t3:=parse_timestr_to_timestamp(time_str3,3)
fmt.Println(t3)
t4:=parse_timestr_to_timestamp(time_str4,4)
fmt.Println(t4)
}
程序执行结果
1568563200
1568617440
1568563200
1568736000
5.时间戳转换成datetime时间
packagemain
import(
"fmt"
"time"
)
funcparse_timestamp_to_datetime(tint64)time.Time{
returntime.Unix(t,0)
}
funcmain(){
vart1int64
t1=1568634050
time1:=parse_timestamp_to_datetime(t1)
fmt.Println(time1)
}
程序执行结果
2019-09-1619:40:50+0800CST
6.时间字符串转换成时间戳
packagemain
import(
"fmt"
"time"
)
funcparse_timestr_to_datetime(time_strstring,flagint)time.Time{
ifflag==1{
t,error1:=time.Parse("2006-01-0215:04:05",time_str)
iferror1!=nil{
panic(error1)
}
returnt
}elseifflag==2{
t,error2:=time.Parse("2006-01-0215:04",time_str)
iferror2!=nil{
panic(error2)
}
returnt
}elseifflag==3{
t,error3:=time.Parse("2006-01-02",time_str)
iferror3!=nil{
panic(error3)
}
returnt
}elseifflag==4{
t,error4:=time.Parse("2006.01.0215:04:05",time_str)
iferror4!=nil{
panic(error4)
}
returnt
}elseifflag==5{
t,error5:=time.Parse("2006.01.0215:04",time_str)
iferror5!=nil{
panic(error5)
}
returnt
}else{
t,err:=time.Parse("2006.01.02",time_str)
iferr!=nil{
panic(err)
}
returnt
}
}
funcmain(){
time_str1:="2019-09-1615:04:05"
t1:=parse_timestr_to_datetime(time_str1,1)
fmt.Println(t1)
time_str2:="2019-09-1615:04"
t2:=parse_timestr_to_datetime(time_str2,2)
fmt.Println(t2)
time_str3:="2019-09-16"
t3:=parse_timestr_to_datetime(time_str3,3)
fmt.Println(t3)
time_str4:="2019.09.1615:04:05"
t4:=parse_timestr_to_datetime(time_str4,4)
fmt.Println(t4)
time_str5:="2019.09.1615:04"
t5:=parse_timestr_to_datetime(time_str5,5)
fmt.Println(t5)
time_str6:="2019.09.16"
t6:=parse_timestr_to_datetime(time_str6,6)
fmt.Println(t6)
}
程序执行结果
2019-09-1615:04:05+0000UTC
2019-09-1615:04:00+0000UTC
2019-09-1600:00:00+0000UTC
2019-09-1615:04:05+0000UTC
2019-09-1615:04:00+0000UTC
2019-09-1600:00:00+0000UTC
7.日期加减操作
packagemain
import(
"fmt"
"time"
)
funcmain(){
now:=time.Now() //当前datetime时间
tomorrow:=now.AddDate(0,0,+1) //一天之后的时间
fmt.Println(tomorrow)
day_after_15:=now.AddDate(0,0,-15) //15天之前的时间
fmt.Println(day_after_15)
}
程序执行结果
2019-09-1717:55:59.4755575+0800CST
2019-09-0117:55:59.4755575+0800CST
总结:
import(
"fmt"
"time"
)
funcparse_datetime_to_timestr(ttime.Time,flagint)string{
/**
把datetime转换成时间字符串
t:datetime时间,比如:2019-09-1709:45:42.5962359+0800CSTm=+0.003989201
flag:标识位,决定输出的时间字符串的格式
*/
vartime_strstring
ifflag==1{
time_str=t.Format("2006-01-0215:04:05")
}elseifflag==2{
time_str=t.Format("2006-01-0215:04")
}elseifflag==3{
time_str=t.Format("2006-01-02")
}elseifflag==4{
time_str=t.Format("2006.01.0215:04:05")
}elseifflag==6{
time_str=t.Format("2006.01.0215:04")
}else{
time_str=t.Format("2006.01.02")
}
returntime_str
}
funcparse_datetime_to_timestamp(ttime.Time)int64{
/**
把datetime转换成时间戳
t:datetime时间
*/
returnt.Unix()
}
funcparse_timestr_to_datetime(time_strstring,flagint)time.Time{
/**
把时间字符串转换成datetime时间
time_str:时间字符串,比如:2019-09-1715:04:05
flag:标识位,决定输入的时间字符串的格式
*/
ifflag==1{
t,error1:=time.Parse("2006-01-0215:04:05",time_str)
iferror1!=nil{
panic(error1)
}
returnt
}elseifflag==2{
t,error2:=time.Parse("2006-01-0215:04",time_str)
iferror2!=nil{
panic(error2)
}
returnt
}elseifflag==3{
t,error3:=time.Parse("2006-01-02",time_str)
iferror3!=nil{
panic(error3)
}
returnt
}elseifflag==4{
t,error4:=time.Parse("2006.01.0215:04:05",time_str)
iferror4!=nil{
panic(error4)
}
returnt
}elseifflag==5{
t,error5:=time.Parse("2006.01.0215:04",time_str)
iferror5!=nil{
panic(error5)
}
returnt
}else{
t,err:=time.Parse("2006.01.02",time_str)
iferr!=nil{
panic(err)
}
returnt
}
}
funcparse_timestr_to_timestamp(time_strstring,flagint)int64{
/**
把时间字符串转换成时间戳
time_str:时间字符串,比如:2019-09-1709:45:42
flag:标识位,决定传入的时间字符串的格式
*/
vartint64
loc,_:=time.LoadLocation("Local")
ifflag==1{
t1,_:=time.ParseInLocation("2006.01.0215:04:05",time_str,loc)
t=t1.Unix()
}elseifflag==2{
t1,_:=time.ParseInLocation("2006-01-0215:04",time_str,loc)
t=t1.Unix()
}elseifflag==3{
t1,_:=time.ParseInLocation("2006-01-02",time_str,loc)
t=t1.Unix()
}elseifflag==4{
t1,_:=time.ParseInLocation("2006.01.02",time_str,loc)
t=t1.Unix()
}else{
t1,_:=time.ParseInLocation("2006-01-0215:04:05",time_str,loc)
t=t1.Unix()
}
returnt
}
funcparse_timestamp_to_timestr(stampint64,flagint)string{
/**
把时间戳转换成时间字符串
stamp:时间戳,比如:1568685105,调用此方法时需先声明为int64类型
flag:标识位,决定输入的时间字符串的格式
*/
vartime_strstring
ifflag==1{
time_str=time.Unix(stamp,0).Format("2006-01-02")
}elseifflag==2{
time_str=time.Unix(stamp,0).Format("2006-01-0215:04:05")
}elseifflag==3{
time_str=time.Unix(stamp,0).Format("2006-01-0215:04")
}elseifflag==4{
time_str=time.Unix(stamp,0).Format("2006.01.0215:04:05")
}elseifflag==5{
time_str=time.Unix(stamp,0).Format("2006.01.0215:04")
}else{
time_str=time.Unix(stamp,0).Format("2006.01.02")
}
returntime_str
}
funcparse_timestamp_to_datetime(tint64)time.Time{
/**
时间戳转换成datetime时间
*/
returntime.Unix(t,0)
}
funcget_after_day(day_range,flagint)time.Time{
/**
获取多少天,多少月或者多少年之前或之后的时间
day_range:间隔的天数,月数或者年份数
flag:决定是取天数,月数还是年数
*/
now:=time.Now()
vartmp_daytime.Time
ifflag==1{
tmp_day=now.AddDate(day_range,0,0)
}elseifflag==2{
tmp_day=now.AddDate(0,day_range,0)
}else{
tmp_day=now.AddDate(0,0,day_range)
}
returntmp_day
}
funcget_after_time(time_rangestring)time.Time{
/**
获取多少小时,分钟及秒之前或之后的时间
time_range:时间差,比如:
10h 获取10小时之后的时间
-10h 获取10小时之前的时间
10m 获取10分钟之后的时间
-10m 获取10分钟之后的时间
10s 获取10秒之后的时间
-10s 获取10秒之后的时间
*/
m,_:=time.ParseDuration(time_range)
tmp:=time.Now().Add(m)
returntmp
}
funcget_current(ttime.Time){
current_year:=t.Year()// 获取年份
fmt.Println(current_year)
current_month:=t.Month()// 获取月份
fmt.Println(current_month)
current_day:=t.Day()// 获取天数
fmt.Println(current_day)
current_hour:=t.Hour()// 获取小时数
fmt.Println(current_hour)
current_minute:=t.Minute()// 获取分钟数
fmt.Println(current_minute)
current_second:=t.Second()// 获取秒数
fmt.Println(current_second)
current_nanosecond:=t.Nanosecond()// 获取纳秒数
fmt.Println(current_nanosecond)
}
本文内容总结:1.datetime转换成时间字符串,2.datetime转换成时间戳,3.时间戳转换成时间字符串,4.时间字符串转换成时间戳,5.时间戳转换成datetime时间,6.时间字符串转换成时间戳,7.日期加减操作,
原文链接:https://www.cnblogs.com/renpingsheng/p/11532190.html