go 时间篇
来源:互联网 发布:蒙特卡洛随机数算法 编辑:程序博客网 时间:2024/06/03 18:11
Go的time包是标准库中的包之一
不用说,几乎是开发必须用到的包之一。time包的说明文档在:
http://golang.org/pkg/time/
先注意下Overview中的一句话:
The calendrical calculations always assume a Gregorian calendar.
这个包的时间计算式是基于格里历,就是我们使用的公历。关于格里历的历史,可以看百度百科:
http://baike.baidu.com/view/391054.htm
看看godoc文档,最大的数据类型就是Time了,这个Time类型最微小可以表示到nanosecond(微毫秒,十亿份之一秒)。
Time的比较是使用Before,After和Equal方法。看一眼After:
func (t Time) After(u Time) bool
很好,返回的是bool类型,是我们所需要的。
Sub方法返回的是两个时间点之间的时间距离,看上图看到它返回的是Duration结构,这个结构的具体类型和操作也在godoc中
Add方法和Sub方法是相反的,获取t0和t1的时间距离d是使用Sub,将t0加d获取t1就是使用Add方法
IsZero方法:Time的zero时间点是January 1, year 1, 00:00:00 UTC,这个函数判断一个时间是否是zero时间点
Local,UTC,Ln是用来显示和计算地区时间的。
下面从几个需求直接看time的使用
1 请打出当前时间的时间戳,然后将时间戳格式为年月日时分秒的形式
package
main
import
(
"fmt"
"time"
)
func main() {
//时间戳
t := time.Now().Unix()
fmt.Println(t)
//时间戳到具体显示的转化
fmt.Println(time.Unix(t,
0
).String())
//带纳秒的时间戳
t = time.Now().UnixNano()
fmt.Println(t)
fmt.Println(
"------------------"
)
//基本格式化的时间表示
fmt.Println(time.Now().String())
fmt.Println(time.Now().Format(
"2006year 01month 02day"
))
}
显示:
特别是Format这个函数,可以好好使用
2 输出当前星期几?
package
main
import
(
"fmt"
"time"
)
func main() {
//时间戳
t := time.Now()
fmt.Println(t.Weekday().String())
}
文档中对这个Weekday类型就没有说明!!没法,直接看代码可以看到:
Weekday有一个String()方法
好了,看到这里外带我们有一个推测:
当一个结构中有定义String()函数的时候,fmt.Println()是会调用String的
例子如下:
package
main
import
(
"fmt"
)
type MyStruct struct{
}
func (d MyStruct)String() string {
return
"mystruct"
}
func main() {
me :=
new
(MyStruct)
fmt.Println(me)
}
- go 时间篇
- go 打印当前时间
- Go语言时间格式化
- Go获取当前时间
- Go语言 时间处理详解
- Go语言中的时间格式
- Go计算运行的时间
- go lang 时间包time
- Go 语言中格式化时间
- Go 计算程序运行时间
- Go测试程序块运行时间
- go语言,一些零碎没时间整理
- Go语言 time时间格式转换
- Go时间格式化和类型互换操作
- go time package format 时间格式
- go语言时间操作一些坑
- Go基础篇之一
- go单元测试进阶篇
- SSH 代理
- Java 事务设计策略
- linux C语言获取随机数rand()和srand(time(NULL))介绍
- Leetcode个人题解11
- Spring Cloud项目中单数据源改为多数据源
- go 时间篇
- YCrCb与YPrPb的含义与区别
- 翻译:《PKCS#7
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制,以及各平台的实现方案
- “Name node is in safe mode” 错误解决方法
- webpack打包编译学习记录
- Spring MVC中对于邮件的初始化,和发送邮件实例代码
- 用c++实现扫雷
- 蓝牙开发经验小结——自动文件传输(OBEX)