time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。

go 的time.now就是你当前所处时区的时间

package main

import (
"fmt"
"time"
) func main() {
now := time.Now()
fmt.Println(now) //获取当前的时间
fmt.Println(now.Year()) //获取当前时间的年份
fmt.Println(now.Month()) //获取当前时间的月份
fmt.Println(now.Date()) //获取当前时间的日子
fmt.Println(now.Hour()) //获取当前时间的时
fmt.Println(now.Minute()) //获取当前时间的分
fmt.Println(now.Second()) //获取当前时间的秒
}

时间戳

时间戳是指从1970年1月1日(08:00:00GMT)至今时间的总毫秒数。它也被称为Unix时间戳(UnixTimeStamp).

基于时间对象获取时间戳的示例代码如下

package main

import (
"fmt"
"time"
) func main() {
now := time.Now()
fmt.Println(now.Unix()) //获取时间戳
fmt.Println(now.UnixNano()) //获取精确时间戳精确到纳秒 }

时间戳转换为时间格式

指定一个时间戳,把时间戳解析成人们能看懂的格式

package main

import (
"fmt"
"time"
) func main() {
now := time.Now()
fmt.Println(now.Unix()) //获取时间戳
fmt.Println(now.UnixNano()) //获取精确时间戳精确到纳秒
//将时间戳转换为时间格式
ret := time.Unix(1674439983, 0) //0表示标志位
fmt.Println(ret.Year())
fmt.Println(ret.Date())
}

时间间隔

Duration类型代表两个时间点之间经过的时间,以纳秒为单位。可表示的最长时间段大约290年。time包中定义的时间间隔常量如下:

const (
Nanosecond Duration = 1
Microsecond = 1000 = Microsecond
Millisecond = 1000 = Microsecond
Second = 1000 = Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)

例如:time.Duration表示1纳秒,time.Second表示1秒

例如表示1秒钟

  //时间间隔
fmt.Println(now.Second())

时间计算

time.Add

某个时间增加一段时间

  //now + 24 小时
fmt.Println(now.Add(24 * time.Hour))

time.Sub

求两个时间之间的差值

  //当前时间减某一个时间点的差值
fmt.Println(now.Sub(ret))

time.Equal

判断两个hi就是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。本方法和用t==u不同,这种方法还会比较地点和时区信息

  //equal
fmt.Println(now.Equal(ret))

time.before

如果t代表的时间点在u之前,返回真;否则返回假

  //before
fmt.Println(now.Before(ret)) t:now u:ret

time.After

如果t表示的时间点在u之后,返回真;否则返回假

  //after
fmt.Println(now.After(ret))

定时器

使用time.Tick(时间间隔)来设置定时器,定时器的本质上是一个通道(channnel)

package main

import (
"fmt"
"time"
) func main() {
//定时器
timer := time.Tick(time.Second) //一秒钟给你一个值,把当前的时间给你
//一秒钟执行一次
for t := range timer {
fmt.Println(t)
}
}

时间格式化

时间类型有一个自带的方法Format进行格式化,需要注意的是Go语言中格式化时间模板不是常见的Y-m-d H:M:S 而是使用Go的诞生时间2006年1月2号15点04分(记忆口诀为2006 1 2 3 4 5)

//Y    m d H M S
//2006 1 2 3 4 5 2006年的1月2号下午的3点4分05秒
package main import (
"fmt"
"time"
) func main() {
now := time.Now()
//2023/01/23
fmt.Println(now.Format("2006-01-02"))
//2023/01/23 11:58:02 24小时制
fmt.Println(now.Format("2006/01/02 15:04:05"))
//2023/01/23 13:00:04 12小时制PM
fmt.Println(now.Format("2006/01/02 03:04:05 PM"))
//2023/01/23 01:00:05 12小时制AM
fmt.Println(now.Format("2006/01/02 03:04:05 AM"))
//精确到毫秒5后面加个000就行
fmt.Println(now.Format("2006/01/02 15:04:05.000"))
}

按照但对于的格式解析字符串类型的时间

  timeObj, err := time.Parse("2006-01-02", "2023-01-23")
if err != nil {
fmt.Printf("parse time err ,err:%v", err)
return
}
fmt.Println(timeObj)
fmt.Println(timeObj.Unix())

time包的更多相关文章

  1. Npm包的开发

    个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │   ...

  2. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  3. 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)

    运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...

  4. android http 抓包

    有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...

  5. 带你实现开发者头条APP(四)---首页优化(加入design包)

    title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...

  6. git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务

     一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目  3.安装依赖包(进入到命令行) # 安装依赖包 $ ...

  7. 关于Visual Studio 未能加载各种Package包的解决方案

    问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...

  8. VS项目中使用Nuget还原包后编译生产还一直报错?

    Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...

  9. 用Java代码实现拦截区域网数据包

    起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路:      正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...

  10. Android studio使用gradle动态构建APP(不同的包,不同的icon、label)

    最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...

随机推荐

  1. adb 指令大全

    adb 指令 指令 说明 adb devices 查看连接设备 adb shell ps 查看进程 adb shell settings get secure android_id android_i ...

  2. Behavior designer 行为树插件 笔记

    插件下载:https://files-cdn.cnblogs.com/files/sanyejun/BehaviorDesigner1.6.4.7z 参考资料:https://blog.csdn.ne ...

  3. ugui 通用页签管理器

    一直是个痛点,这次解决了, ugui通用 using System.Collections;using System.Collections.Generic;using System.Linq;usi ...

  4. SAKE:基于激活导向的知识编辑技术

    SAKE:基于激活导向的知识编辑 随着大型语言模型被证实能够记忆现实世界知识,如何以可控且高效的方式更新这些知识成为关键需求.为此,知识编辑(KE)方法提出对预训练模型中的特定知识进行修改.然而,现有 ...

  5. img convert

    import os from PIL import Image dir = "G:\\dev\\cs-rkbm\\rskzc2025\\yuan2\\新建文件夹0727\\新建文件夹&quo ...

  6. CF742B Arpa’s obvious problem and Mehrdad’s terrible solution (数论)

    codeforces链接:https://codeforces.com/problemset/problem/742/B CF742B Arpa's obvious problem and Mehrd ...

  7. SQLSERVER varchar(MAX) 字段的使用注意

    在使用UniDAC控件连接SQLSERVER数据库时,如果遇到的字段是varchar(MAX)或者nvarchar(MAX)时,代码写的时候不能写成ParamByName('fieldname').A ...

  8. 编辑大量文本的情况vscode比notepad++性能更好

    尝试操作几十万行的文本的时候Notepad++直接卡死了 二十多万行的文本选中需要卡几秒,剪切粘贴文本需要卡几秒 文本替换需要跑几十秒,再多一些的话容易卡崩 使用vscode进行剪切粘贴 批量替换 之 ...

  9. onlyoffice安装方法 http://k.sina.com.cn/article_1823348853_6cae1875020017v94.html

    onlyoffice安装方法http://k.sina.com.cn/article_1823348853_6cae1875020017v94.html

  10. 一个 .NET 开源、功能强大的在线文档编辑器,类似于 Microsoft Word,支持信创!

    前言 在数字化办公日益普及的今天,高效.灵活.可定制的在线文档编辑工具已成为现代工作流中不可或缺的一部分.今天大姚给大家分享一个 .NET 开源.功能强大的在线文档编辑器,并且支持信创:DCWrite ...