首页 文章资讯内容详情

golang时间转换

2026-06-01 3 花语

本文内容纲要:

-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