文档章节

Golang Time Parse

Damir
 Damir
发布于 2016/01/12 15:28
字数 1016
阅读 425
收藏 2
点赞 1
评论 0

先看看有哪些类型

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
胡户主/go_spider

go_spider A crawler of vertical communities achieved by GOLANG. Latest stable Release: Version 1.2 (Sep 23, 2014). QQ群号:337344607 Features Concurrent Fit for vertical commun......

胡户主
2014/11/30
0
0
golang的net/url包

package url import "net/url" url包解析URL并实现了查询的逸码,参见RFC 3986。 Index func QueryEscape(s string) string func QueryUnescape(s string) (string, error) type Error func......

刘地
2014/08/21
0
0
groupcache源码解读

Simple usage gropucache的官方网站是 consistenthash模块 一致性hash算法,通常是用在查找一个合适的下载节点时,使负载更平均,但是对于同样的请求始终返回一样的结果。 用法简单例子 sing...

go-skyblue
2016/04/11
170
0
golang思考之运行速度

有些资料显示golang的运行速度很慢,比Java慢,有时比Python慢。学习吧测试发现golang的运行速度和Java差不多。 首先,使用各种语言编写同一个CPU密集的程序sum。 C(或C++) Golang Java Py...

学习吧
2015/10/17
124
0
golang结构体json的时间格式化解决方案

最近开发项目时候发现一个结构体的Json转换的时间格式问题。 即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是 1993-01-01 20:08:23这种格式。 ...

梦朝思夕
2017/07/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java 重写排序规则,用于代码层级排序

1.dataList 是个List<Map<String,Object>> 类型的数据,所以比较的时候是冲map中获取数据,并且数据不能为空。 2.dataList 类型是由自己定义的,new Comparator<Map<String,Object>> 也是对应......

轻量级赤影
11分钟前
0
0
分布式大型互联网企业架构!

摘要: 开发工具 1.Eclipse IDE:采用Maven项目管理,模块化。 2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表、一对多、树结构。生成后的代码...

明理萝
11分钟前
0
1
对MFC程序的一点逆向分析:定位按钮响应函数的办法

因为消息响应函数保存在AFX_MSGMAP_ENTRY数组中, 观察nMessage、nCode、nID、pfn利用IDA在rdata段中搜索即可, 在IDA中找到代码段基址0x401000,函数地址0x403140, 在WinDbg中运行!addre...

oready
11分钟前
0
0
阻抗匹配与史密斯(Smith)圆图基本原理

参考:http://bbs.eeworld.com.cn/thread-650695-1-1.html

whoisliang
17分钟前
0
0
maven配置文件分离

一、 简介 遇到很多次别人处理的项目,测试环境,本地开发和线上环境的配置不一样,每一次部署都要重新修改配置文件,提交审核代码,才能打包,非常不方便。 其实相信很多人都知道可以使用m...

trayvon
17分钟前
0
0
MacOS和Linux内核的区别

导读 有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我...

问题终结者
33分钟前
1
0
SpringBoot | 第八章:统一异常、数据校验处理

前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响...

oKong
41分钟前
3
0
mysql高级

一、存储引擎 InnoDB MyISAM 比较 二、数据类型 整型 浮点数 字符串 时间和日期 三、索引 索引分类 索引的优点 索引优化 B-Tree 和 B+Tree 原理 四、查询性能优化 五、切分 垂直切分 水平切分...

丁典
今天
1
0
rsync通过同步服务、系统日志、screen工具

rsync通过后台服务同步 在远程主机中建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器。 首先在A机器上建立并且配置rsync的配...

黄昏残影
今天
5
0
Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
今天
166
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部