Go常用包系列---time包

首先先贴一下免翻墙的go语言文档:

中文文档:http://studygolang.com/pkgdoc

英文文档:http://docs.studygolang.com/pkg/

下边为使用例子:

package main

import (
	"fmt"
	"time"
)

func main() {

	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)

}

以上代码可以直接编译运行,注意time包的Format方法的参数

时间: 2024-08-29 03:04:37

Go常用包系列---time包的相关文章

Java并发编程系列 concurrent包概览

从JDK 1.5开始,增加了java.util.concurrent包,concurrent包的引入大大简化了多线程程序的开发. 查看JDK的API可以发现,java.util.concurrent包分成了三个部分,分别是java.util.concurrent.java.util.concurrent.atomic和java.util.concurrent.lock. >>Atomic包 API中的说明是“A small toolkit of classes that support loc

[js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法

[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上) [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下) [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上) [js高手之路]深入浅出webpack教程系

JAVA、android中常用的一些jar包的作用

正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来

python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在python中.一个.py文件就称为一个模块(Module) 使用模块的好处: 提高了代码的可维护性. 其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们编写程序的时候也经常引用其他模块,包括python的内置的模块和第三方模块. 包(package

以太网数据包、IP包、TCP/UDP 包的结构(转)

源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Header Length):长度4比特.这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分.该部分占4个bit位,单位为32bit(4个字节),即本区域值 = IP头部长度(单位为bit)/ (8*4),因此,一个IP包头的长度最长为“1111”,即15*4=60个字节.IP包头最小

Linux-什么是二进制包,源码包,RPM包,软件仓库

博文说明[前言]: 本文将通过个人口吻介绍什么是二进制包,RPM包,源码RPM包(SRPM包),源码包,以及RPM常用命令,源码rpm的安装(*.src.rpm),源码包的安装步骤知识(./configure,make,make install)相关知识. 在目前时间点[2017年6月12号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献引用链接: 1.http://m

NIO框架之MINA源码解析(四):粘包与断包处理及编码与解码

1.粘包与段包 粘包:指TCP协议中,发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.造成的可能原因: 发送端需要等缓冲区满才发送出去,造成粘包 接收方不及时接收缓冲区的包,造成多个包接收 断包:也就是数据不全,比如包太大,就把包分解成多个小包,多次发送,导致每次接收数据都不全. 2.消息传输的格式 消息长度+消息头+消息体  即前N个字节用于存储消息的长度,用于判断当前消息什么时候结束. 消息头+消息体    即固定长度的消息,前几个字节为消息

deb包转换为rpm包格式

在Debian系列中安装软件包可以使用apt或者dpkg安装deb包,但是在CentOs, Redhat等则只能安装RPM包,如果希望在Redhat或者CentOS下也安装Deb包的话是不可行的, 但是可以使用alien工具将Deb包转换为Rpm包, 安装alien的过程很简单. 1.到http://www.filewatcher.com/m/alien_8.78.tar.gz.80612.0.0.html下载alien压缩包. 2.通过tar -zxvf将alien压缩包解压缩, 3.进入到解

Linux下二进制包和源代码包的区分

主要提供三种格式的mysql包:rpm格式.二进制格式.源码格式:(tar打包,gz压缩) rpm格式: libjpeg-devel-6b-33.x86_64.rpm       #rpm格式很好区分, 二进制包: mysql-3.23.58-pc-linux-i686.tar.gz   #二进制格式的包名字很长,有版本号.适应平台.适应的硬件类型等,格式:mysql-<版本>-<OS>-tar.gz 源码包:    php-5.2.14.tar.gz