最全的go语言的时间格式
该文可以快速在Go语言中获得时间的计算。
在Go中获取时间
如何获取当前时间
now := time.Now()
fmt.Printf("current time is :%s", now)
current time is :2009-11-10 23:00:00 +0000 UTC m=+0.000000001
如何获取UNIX Timestamp
cur_time := time.Now().Unix()
fmt.Printf("current unix timestamp is :%v\n", cur_time )
如何获取当日0:00:00 0:00:00
now := time.Now()
date := time.Date(now.Year(), now.Month(), now.Day(),0, 0, 0, 0, time.Local)
fmt.Printf("date is :%s", date)
date is :2021-04-13 00:00:00 +0800
如何获取时区时间
标准时间 time.Now().UTC()
本地时区 time.Now().Local()
// 获取0时区时间
fmt.Printf("date is :%s\n", time.Now().UTC())
date is :2021-04-13 16:02:33.853254 +0000 UTC
// 快速设置时区
timeLocation, _ := time.LoadLocation("Asia/Tokyo") //使用时区码
fmt.Println(time.Now().In(timeLocation).String()) // 快速设置时区
2021-04-14 01:09:18.140997 +0900 JST
Go中的固定时间格式
获取月份
time.April
type Month int
const (
January Month = 1 + iota
February
March
April
May
June
July
August
September
October
November
December
)
获取星期
time.Sunday
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
Go中的时间格式化
Go中时间格式化的格式为 2006-01-02 15:04:05
612345为格式,而不是具体时间
// YYYY-MM-DD
fmt.Println(time.Now().Format("2006-01-02"))
// YYYY-MM-DD hh:mm:ss
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
// M-DD
fmt.Println(time.Now().Format("1-02"))
// MM-DD
fmt.Println(time.Now().Format("01-02")
// 获取当前的小时、分钟、秒(整数)
nowHour, nowMinute, nowSecond = time.Now().Clock()
// 获取前一天
// AddDate(Years, months, days)
yesterday = time.Now().AddDate(0,0,-1).Format("01/02")
// 显示星期英文简写
fmt.Println(time.Now().Format("2006-01-02 15:04:05 Mon"))
// 星期的大写
fmt.Println(time.Now().Format("2006-01-02 15:04:05 Monday"))
// 增加微秒
fmt.Println(time.Now().Format("2006-01-02 15:04:05.000000"))
// 纳秒
fmt.Println(time.Now().Format("2006-01-02 15:04:05.000000000"))
}
// print result
08-10-2018
08-10-2018 21:11:58
08-10-2018 21:11:58 Fri
08-10-2018 21:11:58 Friday
08-10-2018 21:11:58.880934
08-10-2018 21:11:58.880934320
Go中的时间计算
如何获取本周日期有哪些?
获取一个星期的第一天是几号
t:=time.Now()
fmt.Println(t.Weekday()) // 获取现在时间为本周的星期几
得到本日为星期几后,可以对时间进行计算,因为time包内星期的常量都为int,可以直接进行算数运算.
用一周的第一天减去当日为星期几,如果为0既『本日为本周的第一天』
time.AddDate(year, month, date)
,仅可以添加年月日
time.Add(Hours, Minutes, Seconds)
,仅可以添加时分秒
offset := int(time.Monday - t.Weekday()) //=-1
如不为0,time包提供了,「以当前时间为基点,进行加减运算」
// t.AddDate(year, month, date)
t.AddDate(0,0,offset) // 可以获取到,周一为几月几日
综上所属,可以获得每周第一天为几月几日,每周随后一天为几月几日
/**
* 获取上周周第一天具体年月日
**/
func GetLastWeekFirstDate() (weekMonday string) {
thisWeekMonday := GetFirstDateOfWeek()
TimeMonday, _ := time.Parse("2006-01-02", thisWeekMonday)
lastWeekMonday := TimeMonday.AddDate(0, 0, -7)
weekMonday = lastWeekMonday.Format("2006-01-02")
return
}
/**
* 获取本周的周一具体年月日
**/
func GetFirstDateOfWeek() (weekMonday string) {
now := time.Now()
offset := int(time.Monday - now.Weekday())
if offset > 0 {
offset = -6
}
weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
weekMonday = weekStartDate.Format("2006-01-02")
return
}
/**
* 获取上周最后一天具体年月日
**/
func GetLastWeekLastDate() (weekMonday string) {
now := time.Now()
offset := int(time.Monday - now.Weekday())
if offset > 0 {
offset = -6
}
weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
weekMonday = weekStartDate.AddDate(0, 0, -1).Format("2006-01-02")
return
}
/**
* 获取上周一星期所有天数的具体年月日
**/
func GetBetweenDates(sdate, edate string) []string {
d := []string{}
timeFormatTpl := "2006-01-02 15:04:05"
if len(timeFormatTpl) != len(sdate) {
timeFormatTpl = timeFormatTpl[0:len(sdate)]
}
date, err := time.Parse(timeFormatTpl, sdate)
if err != nil {
return d
}
date2, err := time.Parse(timeFormatTpl, edate)
if err != nil {
return d
}
if date2.Before(date) {
return d
}
// 输出日期格式固定
timeFormatTpl = "2006-01-02"
date2Str := date2.Format(timeFormatTpl)
d = append(d, date.Format(timeFormatTpl))
for {
date = date.AddDate(0, 0, 1)
dateStr := date.Format(timeFormatTpl)
d = append(d, dateStr)
if dateStr == date2Str {
break
}
}
return d
}
最全的go语言的时间格式的更多相关文章
- cmd提取时间格式(小时)问题以及Windows系统语言判断
你在这里看到了我的现在的时间是01:15,没错正在做个开发,本来好好的,结果一运行,直接报错: 这里就是时间中的获取小时出了问题,之前23点那会已经调试通过了,过那时是没有问题的,那么这时发生了什么? ...
- pandas修改全列的时间格式 无需使用apply
df.date.dt.strftime('%Y%m%d') #实现全列修改时间格式
- Windows 2012 英文版系统安装中文语言包及时间格式设置
1.安装中文语言包:在运行窗口中输入"LPKSetup.exe",选择中文语言包安装.--------------------------------------------- 2 ...
- iOS- NSDateFormatter (自定义时间格式)
一. NSDateFormatter解释 1. 日期(NSDate)是NSString类的格式(stringWithFormat),也可以改变输出,如果需要输出年代信息等则需要进行转换,等等. 2. ...
- db2 日期时间格式
db2日期和时间常用汇总 1.db2可以通过SYSIBM.SYSDUMMY1.SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值. SELECT 'HELLO DB2 ...
- WinServer2008r2 机器时间格式修改
windows2008 这么高级的系统不可能改个系统的日期时间显示格式还要进注册表啊.于是有baidu,google了下终于发现了,原来还有不需要注册表的更简便方法.windows2008默认时间格式 ...
- Win2008 IIS7日期时间格式更改最简便方法
windows2008 这么高级的系统不可能改个系统的日期时间显示格式还要进注册表啊.于是有baidu,google了下终于发现了,原来还有不需要注册表的更简便方法. windows2008默认时间格 ...
- Sql日期时间格式转换;取年 月 日,函数:DateName()、DATEPART()
一.sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007 ...
- sql 日期时间格式转换
Sql日期时间格式转换 sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, ...
随机推荐
- java例题_47 读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * ...
- 开源服务器设计总计(plain framework2020年总计)
2020年注定会被历史铭记,世界遭受着一场前所未有的灾难,这种灾难到现在还在持续.还记得19年末的时候,那时候听到一点点消息,哪里想得到年关难过,灾难来的让人猝不及防.由于疫情防控,2020年感觉转瞬 ...
- hadoop 简单安装部署
hadoop第一课:虚拟机搭建和安装hadoop及启动 hadoop第二课:hdfs集群集中管理和hadoop文件操作 hadoop第三课:java开发hdfs hadoop第四课:Yarn和Map/ ...
- JavaScript深入理解-PWA渐进式应用
WPA-渐进式 web 应用 PWA 是什么 渐进式 Web 应用,提升 web app 浏览体验. manifest 应用程序清单 基本介绍: web app manifest是 PWA 技术集合中 ...
- JavaWeb 补充(Servlet)
Servlet: server applet 概念: 运行在服务器端的小程序 * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则. * 将来我们自 ...
- 【笔记】《Redis设计与实现》chapter14 服务器
14.1 命令请求的执行过程 读取命令请求 命令执行器(1):查找命令实现 在命令表(command table)中查找参数所指定的命令,并将找到的命令保存到客户端状态的cmd属性里面 命令执行器(2 ...
- Day09_45_Set集合_SortedSet02
SortedSet * TreeSet是SortedSet接口的实现类,TreeSet底层是一个TreeMap,相当于TreeMap中的key. * SortedSet集合是如何实现自动排序的呢? - ...
- 不一样的角度理解Vue组件
什么是组件 以Java.C#等面向对象编程语言的角度去理解Vue组件,能够发现组件和面向对象编程的方式和风格很相似.一切事物皆为对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽 ...
- 图解高性能网络架构:Reactor 和 Proactor
小林,来了. 这次就来图解 Reactor 和 Proactor 这两个高性能网络模式. 别小看这两个东西,特别是 Reactor 模式,市面上常见的开源软件很多都采用了这个方案,比如 Redis.N ...
- H5小技巧之——巧用<a>标签锚链接(#锚点链接 #页面特定位置 #DOM定位 #hash路由中使用锚链接)
#作者:矩阵鱼--代码中游泳的咸鱼 前端开发中,常遇到定位到页面某特定位置的需求,JavaScript提供的el.scrollIntoView() 和 el.scrollIntoViewIfNeede ...