golang time常用方法详解

说明

        在golang中,时间转换都会通过Time类型做一系列转换。主要包含,时间戳和时间字符串,时间字符串转换成另外的格式。总之所有的转换都是通过Time类型做中间转换。参考文档:https://golang.org/pkg/time/

操作

1,获取当前时间

t1 := time.Now()    // 返回的是时间Time类型
fmt.Println(t1, reflect.TypeOf(t1)) 

2,获取指定时间

t4 := time.Date(2019, 9, 30, 14, 28, 26, 23, time.Local)  // 返回时间格式Time
fmt.Println(t4)

3,获取当前时间戳

t1 := time.Now()
t1Second := t1.Unix()  // 获取秒的时间戳
fmt.Println(t1Second)
t1Nano := t1.UnixNano()    // 获取毫秒时间戳
fmt.Println(t1Nano)

4,时间戳转时间time.Time

timeStamp := 1569826535
t := time.Unix(int64(timeStamp), 0)  // time.Time
strTime := t.Format("2006-01-02 15:04:05")
fmt.Println(strTime)  // 2019-09-30 14:55:35

5,时间字符串转时间time.Time

s := "2019年9月30日 15:10:30"  // ---> 2019-09-30 15:10:30
t, err := time.Parse("2006年1月2日 15:4:5", s)
if err != nil {
	fmt.Println(err.Error())
}
result := t.Format("2006-01-02 15:04:05")
fmt.Println(result)

注意:这个地方需要注意两点

1,时间模板必须是 2006年1月2日 15点4分5秒,不论怎么表述,都会是这个时间。

2,在转换的时候,传入的时间格式是什么样子,模板时间也必须写成什么样子。例如:

带转换的时间:2019-09-30 15:12:14  那么模板时间就应该是 2006-01-30 15:04:05

时间转换

        通常转换的过程都是通过time.Time来做中间转换的,不论是时间戳格式转成时间格式,还是时间字符串转换成时间格式/时间其他格式/时间戳,都是通过time.Time格式来做的中转。

1,时间Time格式转时间戳,直接转换,因为Time类型可以转换成时间的任何格式和类型

t1 := time.Now()
timeStamp := t1.Unix()

2,时间戳转时间字符串

timeStamp := 1569826535
t := time.Unix(int64(timeStamp), 0)  // time.Time
strTime := t.Format("2006-01-02 15:04:05")
fmt.Println(strTime)  // 2019-09-30 14:55:35

3,获取时间中的年月日时分秒星期

无论是给的时间戳还是时间格式,都先转换成time.Time

timeStamp := 1569826535  // 2019-09-30 14:55:35
t := time.Unix(int64(timeStamp), 0)  // time.Time
year, month, day := t.Date()
hour, minute, second := t.Clock()
fmt.Println(year, month, day, hour, minute, second)
// 同样可以根据时间格式提供的方法
// 可以获取星期几,还可以获取当前是一年的多少天
fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Weekday(), t.YearDay())

4,时间加减法

timeStamp := 1569826535             // 2019-09-30 14:55:35
t := time.Unix(int64(timeStamp), 0) // time.Time

// 时间年月日加减,如果是负数,怎表示减去多少
t2 := t.AddDate(0, -1, 0)
fmt.Println(t2.Format("2006/01/02 15:04:05"))

// 第二种写法,同样的是负数表示减法
t3 := t.Add(-time.Hour * 24)
fmt.Println(t3.Format("2006/01/02 15:04:05"))

5,判断时间大小

// 判断某个时间是不是在某个时间之前/之后/相等,传入的参数必须是时间格式
t4 := t.After(time.Now())
t5 := t.Before(time.Now())
t6 := t.Equal(t)
// 返回的是bool值
fmt.Println(t4, t5, t6)    // false true true

到此这篇关于golang time常用方法详解的文章就介绍到这了,更多相关golang time常用方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Golang中的time.Duration类型用法说明

    在 Time 包中,定义有一个名为 Duration 的类型和一些辅助的常量: type Duration int64 const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Second = 1000 * Millisecond Minute = 60 * Second Hour = 60 * Minute ) 那么我们看下面一段代码: func Test(

  • 解决Golang time.Parse和time.Format的时区问题

    一.问题描述 在windows下,time.Parse()的时区和time.Format()的时区是一致的. 但是在linux环境下,time.Parse()的默认时区是UTC,time.Format()的时区默认是本地,两者如果不处理好就会导致错误. package main import "time" import "fmt" func main(){ t, err := time.Parse("2006-01-02 15:04:05", &

  • golang time包做时间转换操作

    Time类型 Now方法表示现在时间. func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time 返回现在的时间, func (t Time) Unix() int64将时间转换为unix时间戳,因为duration的限制,所以应该只能计算从1970年开始的250年左右 func Unix(sec int64, nsec int64) Time将时间戳转化为Time对象,看上去相似,只不

  • golang xorm及time.Time自定义解决json日期格式的问题

    golang默认的time.Time类型在转为json格式时不是常用的2019-05-08 10:00:01这种格式,解决办法是自定义一个时间类型,例如 type myTime time.Time ,然后针对myTime实现Marshaler接口的MarshalJSON方法,例如: package models import ( "database/sql/driver" "time" ) const localDateTimeFormat string = &qu

  • 解决golang时间字符串转time.Time的坑

    字符串转时间一定要通过 time.ParseInLocation 不能直接用Parse todayZero, _ := time.ParseInLocation("2006-01-02", "2019-01-01 15:22:22" time.Local) 如果用了Parse,二者就会存在8小时时间差!!!! 补充:golang 常用的日期方法和时区的坑 import( "time" ) 1.获取当前时间 time.Now(),返回类型:time

  • 对Golang中的runtime.Caller使用说明

    如下所示: func Caller(skip int) (pc uintptr, file string, line int, ok bool) 参数:skip是要提升的堆栈帧数,0-当前函数,1-上一层函数,.... 返回值: pc是uintptr这个返回的是函数指针 file是函数所在文件名目录 line所在行号 ok 是否可以获取到信息 示例: 我们分别打印skip为0-3的相关信息 package main import ( "fmt" "runtime"

  • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析

    golang 写循环执行的定时任务,常见的有以下三种实现方式 1.time.Sleep方法: for { time.Sleep(time.Second) fmt.Println("我在定时执行任务") } 2.time.Tick函数: t1:=time.Tick(3*time.Second) for { select { case <-t1: fmt.Println("t1定时器") } } 3.其中Tick定时任务 也可以先使用time.Ticker函数获取

  • golang的时区和神奇的time.Parse的使用方法

    时区 先写一段测试代码: const TIME_LAYOUT = "2006-01-02 15:04:05" func parseWithLocation(name string, timeStr string) (time.Time, error) { locationName := name if l, err := time.LoadLocation(locationName); err != nil { println(err.Error()) return time.Time

  • golang time常用方法详解

    说明         在golang中,时间转换都会通过Time类型做一系列转换.主要包含,时间戳和时间字符串,时间字符串转换成另外的格式.总之所有的转换都是通过Time类型做中间转换.参考文档:https://golang.org/pkg/time/ 操作 1,获取当前时间 t1 := time.Now() // 返回的是时间Time类型 fmt.Println(t1, reflect.TypeOf(t1)) 2,获取指定时间 t4 := time.Date(2019, 9, 30, 14,

  • Go中strings的常用方法详解

    string操作在编程中具有极高的频率,那么string中有哪些有用的方法呢? 使用strings直接操作 Compare func Compare(a, b string) int 按照字典序比较两个字符串,通常情况下直接使用=,>,<会更快一些. Contains,ContainsAny 和 ContainsRune func Contains(s, substr string) bool func ContainsAny(s, chars string) bool func Contai

  • Javascript字符串常用方法详解

    字符串 字符串就是一个或多个排列在一起的字符,放在单引号或双引号之中. 'abc' "abc" length属性 js里的字符串类似于数组,都是一个一个字符拼凑在一起组成的,因此可以用length属性取得字符串的长度 var str = "hello" str.length; // 5 字符串常用的一些方法 1. charAt() str.charAt(n) => 返回字符串的第 n 个字符,如果不在 0~str.length-1之间,则返回一个空字符串. v

  • JavaScript String 对象常用方法详解

    字符串是不可变的.字符串方法,不会改变原有字符串的内容,而是返回一个新字符串. charAt():返回在指定位置的字符. concat():连接两个字符串文本,并返回一个新的字符串. indexOf(): indexOf() 方法返回指定值在字符串对象中首次出现的位置. match(): 使用正则表达式与字符串相比较. replace(): 被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串. slice(): 摘取一个字符串区域,返回一个新的字符串. split(): 通过分

  • $.ajax()常用方法详解(推荐)

    AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下更新网页的一部分.接下来通过本文给大家介绍ajax一些常用方法,大家有需要可以一起学习. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆

  • Swift Set集合及常用方法详解总结

    Swift 集合 Set 及常用方法 1. 创建Set集合 // 创建Set var set: Set<Int> = [1, 2, 3] var set2 = Set(arrayLiteral: 1, 2, 3) 2. 获取元素 // set 获取最小值 set.min() // 获取第一个元素,顺序不定 set[set.startIndex] set.first // 通过下标获取元素,只能向后移动,不能向前 // 获取第二个元素 set[set.index(after: set.start

  • Swift 字符串类型及常用方法详解总结

    目录 1. 构造 2. 拼接 3. 字符 4. 转义符 5. 常用方法 Swift 字符串类型及常用方法 1. 构造 // 直接赋值 text = "" // 1. 构造方法 text = String() // "" // 字符串构造 text = String("William") // "William" // 整型构造 text = String(888) // "888" // 浮点型构造 tex

  • Swift 数组及常用方法详解总结

    目录 1. 创建数组 2. 快捷创建重复元素的数组 3. 数组相加 4. 常用方法 5. 数组遍历 Swift 数组及常用方法 1. 创建数组 // 创建整型数组 var array1: [Int] = [] // [] var arrya2: Array<Int> = [1, 2, 3] // [1, 2, 3] var arryaInt = [1, 2, 3] // [1, 2, 3] var array3 = Array(arrayLiteral: 1, 2, 3) // [1, 2,

  • Python语法学习之进程的创建与常用方法详解

    目录 进程的创建模块 - multiprocessing 创建进程函数 - Process 进程的常用方法 start 函数 join 函数 kill 函数 与 is_alive 函数 进程的相关问题 该章节我们来学习一下在 Python 中去创建并使用多进程的方法,通过学习该章节,我们将可以通过创建多个进程来帮助我们提高脚本执行的效率.可以认为缩短脚本执行的时间,就是提高执行我们脚本的效率.接下来让我们都看一下今天的章节知识点都有哪些? 进程的创建模块 - multiprocessing 创建

  • Python语法学习之线程的创建与常用方法详解

    目录 线程的创建与使用 线程的创建 -threading 线程对象的常用方法 线程演示案例 线程的问题 线程的创建与使用 在Python中有很多的多线程模块,其中 threading 模块就是比较常用的.下面就来看一下如何利用 threading 创建线程以及它的常用方法. 线程的创建 -threading 函数名 介绍 举例 Thread 创建线程 Thread(target, args) Thread 的动能介绍:通过调用 threading 模块的 Thread 类来实例化一个线程对象:它

随机推荐