首页 > 其他分享 >go--time 模块

go--time 模块

时间:2024-03-26 12:13:57浏览次数:24  
标签:15 -- fmt Println 2022 time go CST

time 模块

获取当前的时间和月份

package main

import (
   "fmt"
   "time"
)

func main() {
   t := time.Now() // 获取当前时间
   fmt.Println(t)
   fmt.Println(t.Date())             // 获取日期
   fmt.Println(t.Year())             // 获取年份
   fmt.Println(t.Month())            // 获取月份
   fmt.Println(t.Day())              // 获取日
   fmt.Println(t.Hour())             // 获取小时
   fmt.Println(t.Minute())           // 获取分钟
   fmt.Println(t.Second())           // 获取秒
   fmt.Println(t.UnixMilli())        // 毫秒
   fmt.Println(t.UnixMicro())        // 微秒
   fmt.Println(t.UnixNano())         // 纳秒
   fmt.Println(t.Weekday())          // 返回当前日期是星期几,类型是 time.WeekDay
   fmt.Println(t.Weekday().String()) // 返回当前日期是星期几,类型是字符串
   fmt.Println(t.YearDay())          // 返回当前日期在今年的第几天

   // 需要注意的是t.Weekday() 返回的是 time.WeekDay类型, 而不是字符串
   // 如果想要变成字符串 可以使用 t.Weekday().String()

}

结果

2022-12-15 17:02:29.522366 +0800 CST m=+0.000063272
2022 December 15
2022
December
15
17
2
29
1671094949522
1671094949522366
1671094949522366000
Thursday
Thursday
349

计算时间差

计算时间差我们可以使用 Sub 或者 time.Since() 来获取

package main

import (
   "fmt"
   "time"
)

func main() {
   t1 := time.Now() // 获取当前时间
   time.Sleep(2 * time.Second)
   t2 := time.Now() // 获取当前时间

   d1 := t2.Sub(t1)               // 计算 t2 跟 t1 的时间差,返回类型是 time.Duration
   fmt.Println(d1)                // 默认是秒
   fmt.Println(d1.Microseconds()) //也可以取微秒

   d2 := time.Since(t1) // 等价于上面的 Sub,会自动获取当前时间减去 t1
   fmt.Println(d2)      // 默认是秒,也可以取其他的单位

}

结果

2.003652994s
2003652
2.003733078s

时间的格式化

有时候我们想获取当前的时间,就可以使用 time.Now().Format 来获取了

package main

import (
   "fmt"
   "time"
)

func main() {
   TimeFmt := "2006-01-02 15:04:05" // 必须为这个时间,其中的空格、-、: 可以换成你想要的格式,但时间不能换
   now := time.Now()
   fmt.Println(now) // 2022-12-15 16:36:11.868534 +0800 CST m=+0.000058206

   ts := time.Now().Format(TimeFmt)
   fmt.Println(ts) // 2022-12-15 16:36:11
}

结果

2022-12-15 16:36:11.868534 +0800 CST m=+0.000058206
2022-12-15 16:36:11

设置时区

时区可以通过 time.LoadLocation() 来进行设置

package main

import (
   "fmt"
   "time"
)

func main() {
   TimeFmt := "2006-01-02 15:04:05" // 必须为这个时间,其中的空格、-、: 可以换成你想要的格式,但时间不能换
   now := time.Now()
   fmt.Println(now) // 2022-12-15 16:39:04.932655 +0800 CST m=+0.000144887

   ts := time.Now().Format(TimeFmt)
   fmt.Println(ts) // 2022-12-15 16:39:04

   loc, _ := time.LoadLocation("Asia/Shanghai")   // 设置时区为上海
   t, _ := time.ParseInLocation(TimeFmt, ts, loc) // 第一个参数是格式化,第二个是要格式化的时间,第三个是时区
   fmt.Println(t)                                 // 2022-12-15 16:39:04 +0800 CST
}

时间的加减 Add 和 AddDate

package main

import (
   "fmt"
   "time"
)

func main() {
   t := time.Now() // 获取当前时间
   fmt.Println("当前时间为:", t)
   fmt.Println("十分钟后的时间为:", t.Add(time.Minute*10))  //time.Minute 为一分钟,乘以 10 就是 10 分钟
   fmt.Println("十分钟前的时间为:", t.Add(time.Minute*-10)) // 乘以 -10
   fmt.Println("一天后的时间为:", t.Add(time.Hour*24))     // time.Hour 为 1 小时

   /* 使用 AddDate */
   // AddDate 有三个参数,分别是 年、月、日
   fmt.Println("一年两个月三天后的时间为:", t.AddDate(1, 2, 3))

}

结果

当前时间为: 2022-05-04 14:01:38.303554 +0800 CST m=+0.000174644
十分钟后的时间为: 2022-05-04 14:11:38.303554 +0800 CST m=+600.000174644
十分钟前的时间为: 2022-05-04 13:51:38.303554 +0800 CST m=-599.999825356
一天后的时间为: 2022-05-05 14:01:38.303554 +0800 CST m=+86400.000174644
一年两个月三天后的时间为: 2023-07-07 14:01:38.303554 +0800 CST

字符串于 time.Time 的转换

package main

import (
   "fmt"
   "reflect"
   "time"
)

func main() {
   t := time.Now() // 获取当前时间,类型为 time.Time
    
   fmt.Println("t 的类型为:", reflect.TypeOf(t))
   fmt.Println("当前时间为:", t)
   utcTime := t.Format(time.RFC3339)
   fmt.Println("utcTime 的类型为:", reflect.TypeOf(utcTime))
   fmt.Println(utcTime) // 转为标准时间字符串
    
   // 标准时间字符串,转为 time.Time 类型
   newTime, err := time.Parse(time.RFC3339, utcTime) // 解析有可能出错
   if err != nil {
      fmt.Println("解析错误:", err)
   } else {
      fmt.Println(newTime)
      fmt.Println("newTime 的类型为:", reflect.TypeOf(newTime))
   }
   
}

结果

t 的类型为: time.Time
当前时间为: 2022-05-04 14:15:22.967382 +0800 CST m=+0.000193253
utcTime 的类型为: string
2022-05-04T14:15:22+08:00
2022-05-04 14:15:22 +0800 CST
newTime 的类型为: time.Time

 

标签:15,--,fmt,Println,2022,time,go,CST
From: https://www.cnblogs.com/zouzou-busy/p/16221018.html

相关文章

  • [开源初探]screenshot-to-code:将截图转化为代码
    介绍说明将截图转化为 HTML 代码的工具。该项目可以将屏幕截图转化为 HTML/JS/TailwindCSS 代码,它使用 GPT-4Vision 生成代码、DALL-E3 生成相似的图片。 安装运行为了方便演示及保持原有系统的简洁,将使用 docker 的方式来安装运行 screenshot-to-code。由于项......
  • Kafka Connect 自定义Sink Connector实现在数据同步时增加时间戳字段和假删除功能
    1.情景展示以debezium为例,结合kafka很容易就能实现两个数据库表与表之间的数据同步问题。但是,现在甲方有这样的需求:其一,在源表数据同步至目标表时,目标表增加一个时间戳字段(就是我们通常意义上讲的last_update_time),无论是insert还是update操作,都在此字段插入系统当前时间。用......
  • python多版本安装和导库
    多python版本的pip安装python的库,以及导出python库列表及版本1、同时安装python2和python3时,要进行pip安装python的库:当需要python2的pip时,输入以下命令:py-2-mpipinstallxxx当需要python3的pip时,输入以下命令:py-3-mpipinstallxxx 2、同时安装python2和pytho......
  • 使用Go语言开发一个短链接服务:四、生成code算法
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......
  • 使用Go语言开发一个短链接服务:五、添加和获取短链接
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......
  • 使用Go语言开发一个短链接服务:六、链接跳转
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......
  • SVN服务器备份_svn服务器迁移
    SVN服务器备份_svn服务器迁移发布于2022-11-1115:01:38目录前言1hotcopy备份1.1方法说明1.2手动备份1.3自动备份1.3.1备份脚本1.3.2定时任务1.4还原方法1.4.1VisualSVN还原1.4.2SubVersion还原1.5异常提示2dump......
  • 交换机分类、性能参数
    交换机分类 根据交换方式分存储转发交换完整的接收数据帧,缓存-验证-碎片过滤-转发优点:可以提供差错校验和非对称交换缺点:延迟大直通式交换输入端口扫描到目标地址后立即开始转发优点:延迟小、交换速度快缺点:没有检错能力,不能实现非对称交换碎片过滤式交换开......
  • [题解] BZOJ4203 同桌的你
    题意给出\(n\)个人的性别\(b_i\)、喜欢的人\(a_i\)(有且仅有一个)。现在两人分一组,若一组中存在一人喜欢另一人,则称这一组为「满意」的。要求在最大化「满意」组数的前提下最大化男女同桌组数,并构造分组方案。思路考虑建图,从\(i\)到\(a_i\)连一条有向边,转化为基环树上......
  • 使用Go语言开发一个短链接服务:三、项目目录结构设计
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......