文档章节

Golang Time Parse

Damir
 Damir
发布于 2016/01/12 15:28
字数 1016
阅读 806
收藏 3

先看看有哪些类型

Time

时间类型,包含了秒和纳秒以及Location

Month

type Month int 月份.定义了十二个月的常量

Weekday

type Weekday int 周,定义了一周的七天

Duration

type Duration int64 持续时间.定义了以下持续时间类型.多用于时间的加减 需要传入Duration做为参数的时候.可以直接传入time.Second

    const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
    )

Location

在time包里有两个时区变量:
time.UTC utc时间
time.Local 本地时间
FixedZone(name string, offset int) *Location  
设置时区名,以及与UTC0的时间偏差.返回Location

时间格式化

在其他语言一般格式化字符串是yyyy-MM-dd HH:mm:ss这种.
这个的Go语言的话是2006-01-02 15:04:05,这方式比较特别,按照123456来记忆吧:01月02号 下午3点04分05秒2006年.

Format(layout string) string

传入目标模板(Mon Jan 02 15:04:05 -0700 2006).时间以这个为准

p(t.Format("3:04PM"))
p(t.Format("Mon Jan _2 15:04:05 2006"))
p(t.Format("2006-01-02T15:04:05.999999-07:00"))
p(t.Format("2006-01-02T15:04:05Z07:00"))
fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",
t.Year(), t.Month(), t.Day(),
t.Hour(), t.Minute(), t.Second())

Parse(layout, value string) (Time, error)

将字符窜转换为Time类型.

    p := fmt.Println

    withNanos := "2006-01-02 15:04:05"
    t, _ := time.Parse(withNanos, "2013-10-05 18:30:50")
    p(t.Year())

ParseDuration(s string) (Duration, error)

将字duration符串(“ns”, “us” (or “ns”), “ms”, “s”, “m”, “h”.)转换为Duration类型.就是纳秒

    p := fmt.Println
    t, _ := time.ParseDuration("1h")
    p(t.Seconds())

Time相关

time常用函数

Now() Time

获取当前时间,返回Time类型

Unix(sec int64, nsec int64) Time

根据秒数和纳秒,返回Time类型

Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time

设置年月日返回,Time类型

Since(t Time) Duration

返回与当前时间的时间差

After(u Time) bool

时间类型比较,是否在Time之后

Before(u Time) bool

时间类型比较,是否在Time之前

Equal(u Time) bool

比较两个时间是否相等

IsZero() bool

判断时间是否为零值,如果sec和nsec两个属性都是0的话,则该时间类型为0

Date() (year int, month Month, day int)

返回年月日,三个参数

Year() int

返回年份

Month() Month

返回月份.是Month类型

Day() int

返回多少号

Weekday() Weekday

返回星期几,是Weekday类型

ISOWeek() (year, week int)

返回年份,和该填是在这年的第几周.

Clock() (hour, min, sec int)

返回小时,分钟,秒

Hour() int

返回小时

Minute() int

返回分钟

Second() int

返回秒数

Nanosecond() int

返回纳秒

Add(d Duration) Time

为一个时间,添加的时间类型为Duration.更精确到纳秒.比起AddDate

Sub(u Time) Duration

计算两个时间的差.返回类型Duration

AddDate(years int, months int, days int) Time

添加时间.以年月日为参数

UTC() Time

设置location为UTC,然后返回时间.就是utc为0.比中国晚了八个小时.

Local() Time

设置location为本地时间.就是电脑时间.

Location(loc *Location) Time

设置location为指定location

Location() *Location

获取时间的Location,如果是nic,返回UTC,如果为空,则代表本地

Zone() (name string, offset int)

返回时区,以及与utc的时间偏差

Unix() int64

返回时间戳,自从1970年1月1号到现在

UnixNano() int64

返回时间戳.包含纳秒

 func main() { 

    now := time.Now()
    secs := now.Unix()
    nanos := now.UnixNano()
    fmt.Println(now)
    millis := nanos / 1000000


    fmt.Println(secs)
    fmt.Println(millis)
    fmt.Println(nanos)


    fmt.Println(time.Unix(secs, 0))
    fmt.Println(time.Unix(0, nanos))
}

GobEncode() ([]byte, error)

编码为gob

GobDecode(buf []byte) error

从gob解码

MarshalJSON() ([]byte, error)

编列为json

UnmarshalJSON(data []byte) (err error)

解码为json

    func main() {
        p := fmt.Println


        now := time.Now()
        p(now)


        d := time.Duration(7200 * 1000 * 1000 * 1000)
        p(d)


        then := time.Date(
        2013, 1, 7, 20, 34, 58, 651387237, time.UTC)


        p(then)
        p(then.Year())
        p(then.Month())
        p(then.Day())
        p(then.Hour())
        p(then.Minute())
        p(then.Second())
        p(then.Nanosecond())
        p(then.Location())
        p(then.Weekday())


        p(then.Before(now))
        p(then.After(now))
        p(then.Equal(now))


        p(then.Date())
        p(then.ISOWeek())
        p("----------")
        p(now.UTC())
        p(now.Local())
        p(now.Location())
        p(now.Zone())
        p(now.Unix())
        p(time.Unix(now.Unix(), 0))
        p(now.UnixNano())
        p(time.Unix(0, now.UnixNano()))
        p(now.GobEncode())
        p(now.MarshalJSON())
        p(time.Since(now))
        p("----------")
        diff := now.Sub(then)
        p(diff)


        p(diff.Hours())
        p(diff.Minutes())
        p(diff.Seconds())
        p(diff.Nanoseconds())
        p(then.Add(diff))
        p(then.Add(-diff))


        p(d)
        p(d.Hours())
        p(d.Minutes())
        p(d.Seconds())
        p(d.Nanoseconds())
        p(then.Add(d))
    }


© 著作权归作者所有

共有 人打赏支持
Damir

Damir

粉丝 1
博文 28
码字总数 15448
作品 1
项目经理
WebConsole 1.4.2 发布,SSH 远程终端

WebConsole 1.4.2 发布了。,这是一个基于Golang、WebSocket、TermJS的SSH远程终端。 更新日志: 修改部分BUG 更新 term.js 更新 Golang 到 1.8 版本 修证 Golang 1.8 版本中 url.Parse 解析...

Eriloan
2017/02/27
2.3K
1
WebConsole 1.4.2 发布,SSH 远程终端

更新说明: 修改部分BUG 更新 term.js 更新 Golang 到 1.8 版本 修证 Golang 1.8 版本中 url.Parse 解析地址 BUG 替换 term.js 为 xterm.js,增加xterm的特性 更新对CJK(中文、日文、韩文)字...

Eriloan
2017/02/27
849
0
#每日播报# 8月6日 Github 热门项目汇总

这是一份来自美国的网友利用 Github 的 API 获取的每日 Github 上热门项目列表,该网友每天都会发布更新列表。下面是 8月6日的热门项目列表: objective-c ChristianKienle/Core-Data-Editor...

oschina
2014/08/08
6.6K
22
介绍 google golang 1.1 的新特性

https://go.googlecode.com/hg/doc/go1.1.html go1.1 和go1 有部分改变: Changes to the standard library bufio.Scanner The various routines to scan textual input in the bufio packag......

freewebsys
2013/03/26
0
0
Go基础编程:字符串处理

本文转自:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/07.6.md 字符串在开发中经常用到,包括用户的输入,数据库读取的数据等,我们经常需要对字符串进行...

tennysonsky
01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析高可用分布式键值存储 etcd 的原理

这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议、存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用场景。 etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整...

小刀爱编程
16分钟前
1
0
在ubuntun虚拟机里安装goLang语言编程环境

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 北京时间201...

JerryWang_SAP
17分钟前
5
0
c++builder导出函数export function DLL

__stdcall __export 即可,如: ulong __stdcall __export od_disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode){ return Disasm(src,srcsiz......

simpower
18分钟前
2
0
KDC服务安装及配置

阿伦哥-
21分钟前
1
0
mybatis-plus公共字段操作以及springboot2整合mybatis-plus

1、公共实体 对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性 所有新增公共字段加注解 并指定 @TableField(value = "corp_code",fi...

glen_xu
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部