专栏首页solate 杂货铺go time Format 格式化时间的使用

go time Format 格式化时间的使用

time

  1. 当前时间 time.Now()
  2. 把时间格式化成字符串(time->string) : time.Now().Format("2006-01-02 15:04:05")
  3. 把日期字符串转化为时间(string -> time) : time.Parse("01-02-2006", "06-17-2013")
  4. 把纳秒转化为时间字符串(int64 -> string): time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
  5. 获取当前时间纳秒时间戳 time.Now().UnixNano()
  6. 自己组装时间 time.Date() (看下面)
  7. 时间间隔多久time.Now().Truncate(时间)

string to time

layout := "2006-01-02 15:04:05"
str := "2016-07-25 11:45:26"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

unix 时间格式化, 将int转化为时间

//普通unix时间转换
func(timestamp int64) string {
    tm := time.Unix(timestamp, 0)
    return tm.Format("2006-01-02 15:04:05")
}

// nano 纳秒转换
func(timestamp float64, nsec int64) string {
    //纳秒没什么用 前段不显示 直接将小数舍弃转化为int64
    tm := time.Unix(int64(timestamp), nsec)
    return tm.Format("2006-01-02 15:04:05")
},

组装时间

timeEnd := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 23, 59, 59, 0, time.Local)

时间 加,减,比较

type Duration int64 表示一个持续的时间,单位是纳秒

  1. Add() 加
  2. Sub() 减
  3. Before() 比时间前的一段时间
  4. After() 比时间后的一段时间
package main

import (
	"fmt"
	"time"
)

func main() {
	t := time.Now()
	t2 := t.Add(24 * time.Hour) //当前时间加24小时,即明天的这个时间
	d := t2.Sub(t)
	fmt.Println(t)
	fmt.Println(t2)
	fmt.Println(d)
	if t.Before(t2) {
		//t 小 t2
		fmt.Println("t<t2")
	}
	if t2.After(t) {
		//t2大于 t fmt.Println("t2>t")
		//t2-t1,相差24小时
	}
	if t.Equal(t) {
		//判断两个时间是否相等等
		fmt.Println("t=t")
	}
}

定时器

Go 里的定时器相关的函数有 time.After,time.AfterFunc,time.Tick 等

1.func After(d Duration) <-chan Time 等待一个时间段 d,然后把当前时间发送到 channel 中。与 NewTimer 等价

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now())
	c := time.After(10 * time.Second) //返回 channel 类型,10秒后向 channel 发送当前时间
	t := <-c
	fmt.Println(t)
	tm := time.NewTimer(10 * time.Second) //NewTimer 返回 Timer 类型
	t = <-tm.C /*Timer 结构中有一个 channel C,10秒后,把当前时间发送到 C*/
	fmt.Println(t)
}

2.func AfterFunc(d Duration, f func()) *Timer,等待时间 d,然后调用函数 f。注意这里的 函数 f 是不带任何参数和返回值的

package main

import (
	"fmt"
	"time"
)

func Test() {
	fmt.Println("Hello world!", time.Now())
}
func main() {
	fmt.Println(time.Now())
	time.AfterFunc(10 * time.Second, Test)
	var str string
	fmt.Scan(&str) /*这里主要是等待用户输入,不让进程结束,进程结束定时器也就无效了。*/
}

3.Tick 与 After 有点类似,唯的区别是 After 等待时间到期后,定时器就结束了。Tick 是 每隔一段时间 d 都会向 channel 发送当前时间。

package main

import (
	"fmt"
	"time"
)

func main() {
	c := time.Tick(10 * time.Second)
	for t := range c {
		fmt.Println(t)
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • go语言学习-文件操作 path path/filepath

    在 Linux 中,路径的格式为/user/bin 路径中的分隔符是/; Windos 中的路径格式 为C:\Windows路径中的分隔符是\。 而**在Go中...

    solate
  • go语言学习-iota

    Go没有枚举类型,可以用常量模拟可以用iota生成从0 开始的自动增长的枚举值。按行递增,可以省略后续行的 iota 关键字.

    solate
  • go监控方案(3) -- statsd

    statsd狭义来讲,其实就是一个监听UDP(默认)或者TCP的守护程序,根据简单的协议收集statsd客户端发送来的数据,聚合之后,定时推送给后端,如grap...

    solate
  • 利用装饰器计算函数运行的时间

    西西嘛呦
  • Ticker Or Sleep?定时执行的新选择

    在写 Python 的时候,如果想让某个函数每 60 秒执行一次,我们一般这样写代码:

    青南
  • 程序运行时间测试 - 使用libc 中 time 函数 实现秒级的运行时间检测

    c 标准库中,有time 函数,可以返回 1970年1月1日 开始到现在的秒数,我们可以调用两次的时间差来计算程序运行时间:

    xuyaowen
  • 随机命令自动测试脚本 | SecureCRT 下 Python 实现

    在进行命令终端软件开发及通信道路开发时,常常需要测试终端的稳定性,此时通过命令脚本自动化的敲命令可以节省许多人力,这里写了一个SecureCRT终端模拟软件下p...

    宋天伦
  • time模块

    在Python中,通常有这三种方式来表示时间,时间戳,元组(struct_time)、格式化的时间字符串:

    超蛋lhy
  • golang学习笔记6:时间和日期

    time 包为我们提供了一个数据类型 time.Time (作为值使用)以及显示和测量时间和日期的功能函数。当前时间可以使用 time.Now() 获取,或者使...

    JKXQJ
  • python time模块的使用

    我们先导入必须用到的一个module >>> import time 设置一个时间的格式,下面会用到 >>>ISOTIMEFORMAT=’%Y-%m-%d %X...

    py3study

扫码关注云+社区

领取腾讯云代金券