首页 > 其他分享 >go语言时间相关

go语言时间相关

时间:2023-07-10 20:44:48浏览次数:24  
标签:02 UTC 语言 04 fmt Println time go 相关

在Go语言中,时间定义为Time结构体。

var t = time.Now()
fmt.Printf("%T\n", t) // time.Time
fmt.Printf("%v %+[1]v\n", t) // 2022-10-06 19:35:00.1963422 +0800 CST 
m=+0.001534601
fmt.Printf("%#v\n", t) // time.Date(2022, time.October, 6, 19, 35, 0, 
196342200, time.Local)
fmt.Printf("%T, %[1]v\n", t.UTC()) // UTC时间
// time.Time, 2022-10-06 11:35:00.1963422 +0000 UTC

m=+0.001530201为单调时间,利用的是晶体振荡器的间隔时间,很多时间函数计算都舍弃了它。

时间格式化

Go语言没有采用%Y%m%d这样的格式化符号,可以记住一个字符串"010203040506pm-0700",即 1月2日下午3点4分5秒06年西7区 ,改成我们习惯的格式 符 2006/01/02 15:04:05 -0700。

func main() {
    var t = time.Now()
    fmt.Printf("%v\n", t)
    fmt.Println(t.Format("0102 030405 06 pm -0700"))
    fmt.Println(t.UTC().Format("2006/01/02 03:04:05.000 pm -0700")) // 12小时制显示
    fmt.Println(t.Format("06-01-02 15:04:05.0000 -0700"))           // 24小时制显示
}

打印结果:

 时间解析

if t, err := time.Parse(
 "2006/01/02 15:04:05 -0700", // 格式字符串
 "2008/09/08 20:36:50 +0800", // 时间字符串
); err == nil {
 fmt.Println(t) // 2008-09-08 20:36:50 +0800 CST
} else {
 fmt.Println(err)
}

 带小数部分解析:

.0 解析时,0的位数必须和字符串中的小数部分位数完全一致,否则失败

.9 解析时,可以匹配任意位数小数部分,包括没有小数部分

 时间属性

下面时在time.go源码中定义的常量

 

func main() {
    t := time.Now()
    // 时间戳
    fmt.Println(t.Unix(), t.UnixMilli(), t.UnixMicro(), t.UnixNano())
    fmt.Println(t.Year(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond())
    // 当打印t.Month()和t.Weekday()的时候,默认会调Month和Weekday的String方法
    fmt.Println(t.Month(), t.Weekday())
    fmt.Println(t.Month().String(), t.Weekday().String())
    // 由于Month和Weekday是定义的别名int类型,所以通过强制类型转换可获取对于数字
    fmt.Println(int(t.Month()), int(t.Weekday()))
    fmt.Println(t.ISOWeek())
    // 判断是否位零值,时间的零值为:January 1, year 1, 00:00:00 UTC
    fmt.Println(t.IsZero())
}

 打印结果:

 时区

if t, err := time.Parse(
 "2006/01/02 15:04:05", // 格式字符串
 "2008/09/08 20:36:50", // 时间字符串
); err == nil {
 fmt.Println(t)         // 2008-09-08 20:36:50 +0000 UTC
 fmt.Println(t.Local()) // 2008-09-09 04:36:50 +0800 CST
}

如果没有时区,表示UTC,可以简单认为是零时区时间。

 时间运算

func main() {
    tz, _ := time.LoadLocation("Asia/Shanghai")
    layout := "2006/01/02 03:04:05.00000 pm"
    t0, _ := time.Parse(layout, "2023/07/11 10:48:54.35723 am")
    t1, _ := time.ParseInLocation(layout, "2023/07/11 10:48:41.35723 am", tz)
    fmt.Println(t0)
    fmt.Println(t1)
    // 计算时间差
    delta := t0.Sub(t1)
    fmt.Printf("%T %[1]v\n", delta)
    // 相差的秒数、分钟数
    fmt.Println(delta.Seconds(), delta.Minutes())
}

执行结果:

 

 

 

标签:02,UTC,语言,04,fmt,Println,time,go,相关
From: https://www.cnblogs.com/caibao666/p/17541580.html

相关文章

  • 【数据结构与算法】栈相关算法题(长期更新)
    TS实现栈interfaceIStack<T>{push(e:T):void;pop():T|undefined;peek():T;isEmpyt():boolean;size():number;}//implements:实现接口,一个类可以实现多个接口classArrayStack<T>implementsIStack<T>{privatedata:T[]=[];//pri......
  • Day03-13 break、continue、goto
    breakbreak在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)    inti=0;    while(i<100){      i++;      System.out.println(i);  ......
  • C语言中 #pragma pack()
    #pragma pack    这条指令主要用作改变编译器的默认对齐方式。 pragmapack(show)     //显示当前内存对齐的字节数,编辑器默认8字节对齐   #pragmapack(n)        //设置编辑器按照n个字节对齐,n可以取值1,2,4,8,16   #pragmapack(push)  ......
  • 六月更新 | MeetingOps:让有效协作与高效会议共同发生在云端
    腾讯云CODING6月新功能上线啦!本次更新,我们给用户提供了更便捷的会议协同、事项管理等重磅能力。以下是CODING新功能速递,快来看看是否有您期待已久的功能特性:01项目迭代支持会议协作为了满足更多研发协作场景需求,腾讯云CODING与「腾讯会议」产品联合,进一步强化研发与会......
  • OSLUI:摆脱Shell,通过自然语言操作Linux
    Linuxshell命令是强大的,但也是复杂的。不光是新手记不住,往往很多老手也不一定能很好地掌握一些shell命令。最近开发了一款小工具:OSLUI,目标是做操作系统的自然语言界面,让人们可以摆脱Shell,直接通过自然语言和计算机进行交互。github地址:https://github.com/BalianWang/OSLUI。欢......
  • go语言序列化和反序列化
    序列化需求内存中的map、slice、array以及各种对象,如何保存到一个文件中?如果是自己定义的结构体的实例,如何保存到一个文件中?如何从文件中读取数据,并让它们在内存中再次恢复成自己对应的类型的实例?要设计一套协议,按照某种规则,把内存中数据保存到文件中。文件是一个字节序列,所......
  • 电商支付实战项目与相关面试题总结
    电商支付实战项目与相关面试题总结接下来我将用一篇万字长文,总结好这个项目以达到可以正面硬钢面试官的水平,如果作为一个毫无头绪的大学生的你,简历中需要一个还算拿得出手的项目,那么在2023年的今天,足矣作为一个还算OK的项目写进你的简历。当然,这只能算简历中的第一个项目,你还需要......
  • 关键词:合作博弈 纳什谈判 微网 能源系统 编程语言:matlab 主题:
    关键词:合作博弈纳什谈判微网能源系统编程语言:matlab主题:基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法主要内容:以可再生能源制氢为特征的能源系统将是今后能源互联网建设的重要方向之一。该文针对风–光–氢多主体能源系统的合作运行展开研究。首先,考虑主体间的......
  • 关键词:储能容量优化 储能配置 微网 编程语言:matlab 主
    关键词:储能容量优化储能配置微网编程语言:matlab主题:基于混合整数规划方法的微网电池储能容量优化配置主要内容:本代码目的为实现微电网内电池容量的优化配置,目标函数为配置过程中整体的运行成本最小或者经济效益最大化,约束条件则包括相应的运行约束以及能量平衡约束等等,最后将......
  • 基于FPGA的信号发生器,使用VHDL或Verilog语言进行开发,可以提供相关的仿真和设计说资料
    基于FPGA的信号发生器,使用VHDL或Verilog语言进行开发,可以提供相关的仿真和设计说资料。ID:3150646782307233......