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包日期时间常用用法的更多相关文章

  1. golang 中 sync包的 WaitGroup

    golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 ...

  2. 在Power BI报表和仪表板中显示刷新日期\时间

    有人最近问我:“如何在报告和仪表板中显示最后刷新数据的日期和时间?”这里有两个简单的技巧在这分享下,也许可以帮助到你. 显示上次刷新日期\时间 要想显示刷新的日期和时间,我们需要在模型本身中存储时间刷 ...

  3. JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;

    学习目标 1.掌握创建日期对象的方法 2.掌握date对象中获取日期时间的方法 3.掌握date对象中设置日期时间的方法 如何创建一个日期对象 语法:new Date(); 功能:创建一个日期时间对象 ...

  4. Go_21: Golang 中 time 包的使用二

    常量声明: const TimeLayout = "2006-01-02 15:04:05" 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4- ...

  5. jdk8环境下sprngboot/springmvc中JSR310新日期/时间类LocalDateTime显示效果带T

    如图所示: 日期时间类中带了一个T,以上这种格式LocalDateTime格式化的时候默认日期时间格式:ISO.DATE_TIME(按笔者目前的知识理解是ISO8601规范中的日期时间格式化) 想要把 ...

  6. js中时间戳与日期时间之间的相互转换

    1.时间戳转换为标准日期时间格式: function timeFormat(dateStr) { var date = new Date(dateStr); Y = date.getFullYear( ...

  7. golang中time包一个简单的时间格式输出

    一.代码 package main import ( "fmt" "time" ) func main() { //"2006-01-02 15:04 ...

  8. golang 中strconv包用法

    链接:https://studygolang.com/articles/5003 http://www.cnblogs.com/golove/p/3262925.html

  9. golang中从一个日期开始往后增加一段时间

    废话少说上code, 这个是从当前日期开始,往后增加一个月时间 package main import ( "fmt" "time" ) func main() ...

随机推荐

  1. Elasticsearch 和 solr 的区别

    背景:它们都是基于Luence搜索服务器基础之上开发的一款优秀高性能的企业级搜索服务器.也都是基于分词技术构建的倒排索引的方式进行查询 开发语言:java 诞生时间: solr  :2004年 es ...

  2. Linux(centos)使用shell脚本停止启动jar包

    在jar包目录下创建一个文件,后缀为 .sh #!/bin/bash # stop service pid=`ps -ef | grep "jar包名字" | grep -v &q ...

  3. Miniconda入门教程

    Miniconda 教程 介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学包,Anaconda 的下载文件 ...

  4. CRB and His Birthday(hdu 5410)

    CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  5. 1326 - Race

    1326 - Race   PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB Disky and S ...

  6. APP打开(四)—Deeplink推广,打开率很低怎么排查

    在开始正文之前,先解释一下,这里提到的打开率指的是点击了Deeplink之后正常打开了APP和点击量的比值. 开始正文: 但凡做TOC业务的多多少少都会用到Deeplink,这是一个重要的运营手段.但 ...

  7. [决策树]西瓜数据graphviz可视化实现

    [决策树]西瓜数据graphviz可视化实现 一.问题描述: 使用西瓜数据集构建决策树,并将构建的决策树进行可视化操作. 二.问题简析: 首先我们简单的介绍一下什么是决策树.决策树是广泛用于分类和回归 ...

  8. Java Web程序设计笔记 • 【第7章 会话跟踪技术】

    全部章节   >>>> 本章目录 7.1 会话跟踪技术概述 7.1.1 为什么需要会话跟踪 7.1.2 会话的状态和跟踪 7.1.3 会话跟踪技术 7.1.4 会话跟踪工作流程 ...

  9. MongoDB分片设计

    #### 如何做好分片集群 * 合理的架构 * 是否需要分片? * 要分多少片? * 数据分布规则? * 正确的姿势 * 选择需要分片的表 * 选择正确的片键 * 使用合适的均衡策略 * 足够的资源 ...

  10. Lomsat gelral

    题目描述 You are given a rooted tree with root in vertex 11 . Each vertex is coloured in some colour. Le ...