golang中time包日期时间常用用法
package main import (
"fmt"
"reflect"
"time"
) var week time.Duration func main() {
t := time.Now() // 输出当前时间:
fmt.Println(t, reflect.TypeOf(t)) // 2021-09-27 11:05:44.5965538 +0800 CST m=+0.018000701 time.Time // 格式化输出当前时间的两种方法
ret1 := t.Format("2006-01-02 15:04:05")
fmt.Println(ret1, reflect.TypeOf(ret1)) // 2021-09-27 11:05:44 string
ret2 := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
fmt.Println(ret2, reflect.TypeOf(ret2)) // 2021-09-27 11:05:44 string // Add用法:计算一周后的日期
week = 60 * 60 * 24 * 7 * 1e9 // 必须是nanosecond
oneWeekLaterFromNow := t.Add(week)
fmt.Println(oneWeekLaterFromNow, reflect.TypeOf(oneWeekLaterFromNow)) // 2021-10-04 11:08:24.107976 +0800 CST m=+604800.020852001 time.Time // 获取指定日期的0点时间
ret3 := GetZeroTime(t)
fmt.Println(ret3, reflect.TypeOf(ret3)) // 获取指定日期所属月份的第一天0点时间
ret4 := GetFirstDayOfMonth(t)
fmt.Println(ret4, reflect.TypeOf(ret4)) // 获取指定日期所属月份的最后一天0点时间
ret5 := GetLastDayOfMonth(t)
fmt.Println(ret5, reflect.TypeOf(ret5)) // 获取当前周的周一
ret6 := GetMondayOfCurrentWeek(t)
fmt.Println(ret6, reflect.TypeOf(ret6)) // 计算UTC时间
ret7 := t.UTC()
fmt.Println(ret7) } func GetZeroTime(t time.Time) time.Time {
// 获取指定日期的0点时间
return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
} func GetFirstDayOfMonth(t time.Time) time.Time {
// 获取指定日期所属月份的第一天0点时间
d := t.AddDate(0, 0, -t.Day()+1)
return GetZeroTime(d)
} func GetLastDayOfMonth(t time.Time) time.Time {
// 获取指定日期所属月份的最后一天0点时间
return GetFirstDayOfMonth(t).AddDate(0, 1, -1)
} func GetMondayOfCurrentWeek(t time.Time) time.Time {
// 获取当前周的周一
var offset int
if t.Weekday() == time.Sunday {
offset = 7
} else {
offset = int(t.Weekday())
}
return t.AddDate(0, 0, -offset+1)
}
用法2:
t0 := time.Now()
// 字符串类型转换为Time类型
t1, _ := time.Parse("2006-01/02", "2021-10/16")
fmt.Println(t1) // 2021-10-16 00:00:00 +0000 UTC // 创建一个时间
t2 := time.Date(2021,10,16,0,0,0,0,time.UTC)
t3 := time.Date(2021,10,16,0,0,0,0,time.Local)
fmt.Println(t2, t3) // 时间格式化,Time类型转换为字符串类型
fmt.Println(t0.Format("2006/01/02")) // 时间增加
t4 := t0.Add(time.Hour * 1)
fmt.Println(t4) // 时间减小
t5 := t0.Add(-time.Minute * 1)
fmt.Println(t5) // 时间间隔
t8 := t4.Sub(t0)
fmt.Println(t8.Hours(), t8.Minutes(), t8.Seconds())
golang中time包日期时间常用用法的更多相关文章
- golang 中 sync包的 WaitGroup
golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 ...
- 在Power BI报表和仪表板中显示刷新日期\时间
有人最近问我:“如何在报告和仪表板中显示最后刷新数据的日期和时间?”这里有两个简单的技巧在这分享下,也许可以帮助到你. 显示上次刷新日期\时间 要想显示刷新的日期和时间,我们需要在模型本身中存储时间刷 ...
- JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;
学习目标 1.掌握创建日期对象的方法 2.掌握date对象中获取日期时间的方法 3.掌握date对象中设置日期时间的方法 如何创建一个日期对象 语法:new Date(); 功能:创建一个日期时间对象 ...
- Go_21: Golang 中 time 包的使用二
常量声明: const TimeLayout = "2006-01-02 15:04:05" 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4- ...
- jdk8环境下sprngboot/springmvc中JSR310新日期/时间类LocalDateTime显示效果带T
如图所示: 日期时间类中带了一个T,以上这种格式LocalDateTime格式化的时候默认日期时间格式:ISO.DATE_TIME(按笔者目前的知识理解是ISO8601规范中的日期时间格式化) 想要把 ...
- js中时间戳与日期时间之间的相互转换
1.时间戳转换为标准日期时间格式: function timeFormat(dateStr) { var date = new Date(dateStr); Y = date.getFullYear( ...
- golang中time包一个简单的时间格式输出
一.代码 package main import ( "fmt" "time" ) func main() { //"2006-01-02 15:04 ...
- golang 中strconv包用法
链接:https://studygolang.com/articles/5003 http://www.cnblogs.com/golove/p/3262925.html
- golang中从一个日期开始往后增加一段时间
废话少说上code, 这个是从当前日期开始,往后增加一个月时间 package main import ( "fmt" "time" ) func main() ...
随机推荐
- SPringBoot 配置类继承WebMvcConfigurationSupport和实现WebMvcConfigurer的使用
个人习惯使用 实现的方式 public class WebMvcConfiguration implements WebMvcConfigurer {
- 【LeetCode】1432. 改变一个整数能得到的最大差值 Max Difference You Can Get From Changing an Integer
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 日期 题目地址:https://leetcode ...
- 【LeetCode】61. Rotate List 解题报告(Python)
[LeetCode]61. Rotate List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fux ...
- [数学]高数部分-Part III 中值定理与一元微分学应用
Part III 中值定理与一元微分学应用 回到总目录 Part III 中值定理与一元微分学应用 1. 中值定理 费马定理 罗尔定理 拉格朗日中值定理 柯西中值定理 柯西.拉格朗日.罗尔三者间的关系 ...
- CS5265/CS5267设计替代VL102+PS176 Typec转HDMI2.0音视频芯片
目前USB TYPEC转HDMI2.0转换方案或者TYPEC转HDMI2.0转换器方案都是用PS176加一个PD芯片来实现,其中VL102是一颗PD协议芯片,PS176是一款DP转HDMI2.0视频解 ...
- 编写Java程序,中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝参见玉帝,而每一天参
查看本章节 查看作业目录 需求说明: 中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝 ...
- APP自动化测试之手机滑屏
相信大家在安装一个APP之后,进入之前会有几个页面组成的滑屏欢迎页面,要对这个APP进行自动化测试之前,就需要实现自动滑屏,怎么实现呢?请继续往下看 滑屏分 左滑和右滑,上滑.下滑 实现的原理(左滑) ...
- idea 创建 springboot 模块报错-解决
1.报错截图 2.解决 把 https://start.spring.io 换成 阿里镜像的即可 https://start.aliyun.com/
- js字符串数组['1','2','3']转number
let arr = ['1','2','3']; arr.split(',').map(Number);
- [Win32] UAC用户账户控制 (提权)
最近写程序时遇到一个问题,就是当一个程序需要管理员权限才能正常运行该怎么办? 通过查阅多方资料,我总结出来几个比较实用的办法(每种办法实现方法不同,同时功能上也有一些小小的差异) 方法一(批处理脚本) ...