time包
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包的更多相关文章
- Npm包的开发
个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │ ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...
- android http 抓包
有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...
- 带你实现开发者头条APP(四)---首页优化(加入design包)
title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...
- git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务
一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目 3.安装依赖包(进入到命令行) # 安装依赖包 $ ...
- 关于Visual Studio 未能加载各种Package包的解决方案
问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...
- VS项目中使用Nuget还原包后编译生产还一直报错?
Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...
- 用Java代码实现拦截区域网数据包
起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路: 正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...
- Android studio使用gradle动态构建APP(不同的包,不同的icon、label)
最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...
随机推荐
- adb 指令大全
adb 指令 指令 说明 adb devices 查看连接设备 adb shell ps 查看进程 adb shell settings get secure android_id android_i ...
- Behavior designer 行为树插件 笔记
插件下载:https://files-cdn.cnblogs.com/files/sanyejun/BehaviorDesigner1.6.4.7z 参考资料:https://blog.csdn.ne ...
- ugui 通用页签管理器
一直是个痛点,这次解决了, ugui通用 using System.Collections;using System.Collections.Generic;using System.Linq;usi ...
- SAKE:基于激活导向的知识编辑技术
SAKE:基于激活导向的知识编辑 随着大型语言模型被证实能够记忆现实世界知识,如何以可控且高效的方式更新这些知识成为关键需求.为此,知识编辑(KE)方法提出对预训练模型中的特定知识进行修改.然而,现有 ...
- img convert
import os from PIL import Image dir = "G:\\dev\\cs-rkbm\\rskzc2025\\yuan2\\新建文件夹0727\\新建文件夹&quo ...
- 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 ...
- SQLSERVER varchar(MAX) 字段的使用注意
在使用UniDAC控件连接SQLSERVER数据库时,如果遇到的字段是varchar(MAX)或者nvarchar(MAX)时,代码写的时候不能写成ParamByName('fieldname').A ...
- 编辑大量文本的情况vscode比notepad++性能更好
尝试操作几十万行的文本的时候Notepad++直接卡死了 二十多万行的文本选中需要卡几秒,剪切粘贴文本需要卡几秒 文本替换需要跑几十秒,再多一些的话容易卡崩 使用vscode进行剪切粘贴 批量替换 之 ...
- onlyoffice安装方法 http://k.sina.com.cn/article_1823348853_6cae1875020017v94.html
onlyoffice安装方法http://k.sina.com.cn/article_1823348853_6cae1875020017v94.html
- 一个 .NET 开源、功能强大的在线文档编辑器,类似于 Microsoft Word,支持信创!
前言 在数字化办公日益普及的今天,高效.灵活.可定制的在线文档编辑工具已成为现代工作流中不可或缺的一部分.今天大姚给大家分享一个 .NET 开源.功能强大的在线文档编辑器,并且支持信创:DCWrite ...