Go常用包学习| time 包

mervyn 2018年7月18日12:47:31编程语言 GoGo常用包学习| time 包已关闭评论1192

本文主要已代码的方式来讲述如何使用 Gotime文章源自编程技术分享-https://mervyn.life/c3ee5e76.html

package main

import (
    "fmt"
    "time"
)

func datetimeDemo() {

    fmt.Printf("当前年份:%d\n", time.Now().Year())

    fmt.Printf("当前月份:%d\n", time.Now().Month())

    fmt.Printf("当前日子:%d\n", time.Now().Day())

    fmt.Printf("当前小时:%d\n", time.Now().Hour())

    fmt.Printf("当前分钟:%d\n", time.Now().Minute())

    fmt.Printf("当前秒:%d\n", time.Now().Second())

    now := time.Now()
    //当前时间的时间戳
    fmt.Printf("当前时间戳:%d\n", now.Unix())

    //日期格式化
    //YYYY (4位数表示完整年份)
    fmt.Printf("当前的4位数年份为:%s\n", now.Format("2006"))

    //yy (2位数表示的年份)
    fmt.Printf("当前的2位数年份为:%s\n", now.Format("06"))

    year, _, _ := time.Now().Date()
    fmt.Printf("当前年份为:%d\n", year)

    //mm 有前导零的月份
    fmt.Printf("当前月份:%s月\n", now.Format("01"))

    //n 没有前导零的月份
    fmt.Printf("当前月份:%s月\n", now.Format("1"))

    _, month, _ := time.Now().Date()
    fmt.Printf("当前月份:%d月\n", month)
    fmt.Printf("当前月份:%s\n", month)

    //dd 月份中的第几天,有前导零的 2 位数字
    fmt.Printf("当前日期:%s日\n", now.Format("02"))

    //j 月份中的第几天,没有前导零
    fmt.Printf("当前日期:%s日\n", now.Format("2"))

    _, _, day := time.Now().Date()
    fmt.Printf("当前月份:%d日\n", day)

    //D 星期中的第几天,文本表示,3个字母
    fmt.Printf("当前时间:%s\n", now.Format("Mon"))

    //l 星期几,完整的文本格式
    fmt.Printf("当前时间:%s\n", now.Format("Monday"))
    //功能同上
    fmt.Printf("当前时间:%s\n", now.Weekday().String())

    //HH (24小时制)
    fmt.Printf("当前时间:%s时\n", now.Format("15"))

    //hh (12小时制,有前导零)
    fmt.Printf("当前时间:%s时\n", now.Format("03"))

    //g (12小时制,没有前导零)
    fmt.Printf("当前时间:%s时\n", now.Format("3"))

    fmt.Printf("当前时间:%d时\n", now.Hour())

    hour, _, _ := now.Clock()
    fmt.Printf("当前时间:%d时\n", hour)

    //ii (有前导零的分钟数)
    fmt.Printf("当前时间:%s分\n", now.Format("04"))

    // (没有前导零的分钟数)
    fmt.Printf("当前时间:%s分\n", now.Format("4"))

    fmt.Printf("当前时间:%d分\n", now.Minute())

    _, minute, _ := now.Clock()
    fmt.Printf("当前时间:%d分\n", minute)

    //ss (有前导零的秒数)
    fmt.Printf("当前时间:%s秒\n", now.Format("05"))

    // (没有前导零的秒数)
    fmt.Printf("当前时间:%s秒\n", now.Format("5"))

    fmt.Printf("当前时间:%d秒\n", now.Second())

    _, _, sec := now.Clock()
    fmt.Printf("当前时间:%d秒\n", sec)

    //YYYY-mm-dd HH:ii:ss
    fmt.Printf("当前时间:%s\n", now.Format("2006-01-02 15:04:05"))

    //YYYY/mm/dd HH:ii:ss
    fmt.Printf("当前时间:%s\n", now.Format("2006/01/02 15:04:05"))

    //获取指定日期的时间戳
    date := time.Date(2015, 04, 01, 13, 11, 11, 0, time.Local)
    fmt.Printf("%s的日期的时间戳:%d\n", date.Format("2006-01-02 15:04:05"), date.Unix())

    //指定时区
    prc := time.FixedZone("PRC", 8*3600) //注意第二个参数(基于UTC的秒数,8*3600为东八区)
    date1 := time.Date(2015, 04, 01, 13, 11, 11, 0, prc)
    fmt.Printf("%s的日期的时间戳:%d\n", date1.Format("2006-01-02 15:04:05"), date1.Unix())

    newDate := date.Add(2 * time.Second)
    fmt.Printf("%s两秒后的时间是:%s\n", date.Format("2006-01-02 15:04:05"), newDate.Format("2006-01-02 15:04:05"))

    newDate = date.Add(-2 * time.Second)
    fmt.Printf("%s两秒前的时间是:%s\n", date.Format("2006-01-02 15:04:05"), newDate.Format("2006-01-02 15:04:05"))

    newDate = date.Add(-2 * time.Minute * 60 * 24)
    fmt.Printf("%s两天前的时间是:%s\n", date.Format("2006-01-02 15:04:05"), newDate.Format("2006-01-02 00:00:00"))

    newDate = date.AddDate(0, 0, -2)
    fmt.Printf("%s两天前的时间是:%s\n", date.Format("2006-01-02 15:04:05"), newDate.Format("2006-01-02 00:00:00"))

    //2015-04-01 13:11:11 到现在经过的秒数
    fmt.Println(time.Now().Sub(date).Seconds())
    fmt.Println(time.Since(date).Seconds())

    if !time.Now().Before(date) {
        fmt.Printf("%s 小于当前时间\n", date.Format("2006-01-02 15:04:05"))
    }

    if time.Now().After(date) {
        fmt.Printf("%s 小于当前时间\n", date.Format("2006-01-02 15:04:05"))
    }

    if !time.Now().Equal(date) {
        fmt.Printf("%s 不等于当前时间\n", date.Format("2006-01-02 15:04:05"))
    }

    fmt.Printf("今天是当年第%d天\n", now.YearDay())
    fmt.Printf("今天是当月第%d日\n", now.Day())

    //休眠3秒
    time.Sleep(3 * time.Second)

}
文章源自编程技术分享-https://mervyn.life/c3ee5e76.html
weinxin
我的微信公众号
微信扫一扫
mervyn
go中string和int、floatx相互转换 Go

go中string和int、floatx相互转换

日常开发中经常用到字符串和数字之间的相关转换,下面总结下常用的类型转换方式。 字符串转数字 string转int i, err := strconv.Atoi(str) if err != nil{ ...
python多版本及依赖包管理 Python

python多版本及依赖包管理

本文主要讲述如何通过 pyenv 来管理不同版本的 python ,以及如何使用 Pipenv 在同一个python版本实现项目之间依赖包的隔离。 pyenv Linux下安装 curl https:...
PHP 将16进制字符转换成汉字 PHP

PHP 将16进制字符转换成汉字

项目代码提供给外部的api,有些参数是中文的。发现有些客户在请求接口的时候,参数的值被转成了16进制,从而导致接口无法正常解析。 此时可以采用如下方法进行转移: <?php $param = &...
Go 方法指针接收者和值接收者 Go

Go 方法指针接收者和值接收者

Go 语言可以给自定义的类型添加一个方法。这里的方法其实也是函数,跟函数的区别在于在 func 关键字和函数名中间增加了一个参数,可以认为该类型也作为了参数传递入了函数中,例: package mai...