zoukankan      html  css  js  c++  java
  • go语言time包的学习(Time,Location,Duration,Timer,Ticker)

    package main;
    
    import (
    	"time"
    	"fmt"
    )
    
    func main() {
    	//time.Time代表一个纳秒精度的时间点
    	var t time.Time;
    	//返回当前时间
    	t = time.Now();
    	fmt.Printf("%v
    ", t);
    	//反回所在时区
    	fmt.Printf("%v
    ", t.Location());
    	//返回UTC时间和UTC时区
    	fmt.Printf("%v %v
    ", t.UTC(), t.UTC().Location());
    	//同上,In()返回指定时区的时间
    	fmt.Printf("%v %v
    ", t.In(time.UTC), t.In(time.UTC).Location());
    	//返回当地时区的时间
    	fmt.Printf("%v %v
    ", t.Local(), t.Local().Location());
    
    	//根据时间戳返回本地时间
    	//参数分别表示秒数和纳秒数
    	t2 := time.Unix(1487780010, 0);
    	fmt.Println(t2);
    
    	//根据指定时间返回time.Time
    	//分别指定年,月,日,时,分,秒,纳秒,时区
    	t3 := time.Date(2017, time.Month(5), 26, 15, 30, 20, 0, t.Location());
    	fmt.Println(t3);
    
    	//格式化输出时间
    	t4 := time.Now();
    	fmt.Println(t4.Format("2006-01-02 15:04:05"));
    
    	//获取时间信息
    	t5 := time.Now();
    	//返回日期
    	fmt.Println(t5.Date());
    	//返回年
    	fmt.Println(t5.Year());
    	//返回月
    	fmt.Println(t5.Month());
    	//返回日
    	fmt.Println(t5.Day());
    	//返回星期
    	fmt.Println(t5.Weekday());
    	//返回ISO 9601标准下的年份和星期编号
    	fmt.Println(t5.ISOWeek());
    	//返回时分秒
    	fmt.Println(t5.Clock());
    	//返回小时
    	fmt.Println(t5.Hour());
    	//返回分钟
    	fmt.Println(t5.Minute());
    	//返回秒
    	fmt.Println(t5.Second());
    	//返回纳秒
    	fmt.Println(t5.Nanosecond());
    	//返回一年中对应的天
    	fmt.Println(t5.YearDay());
    	//返回时区
    	fmt.Println(t5.Location());
    	//返回时区的规范名,时区相对于UTC的时间偏移量(秒)
    	fmt.Println(t5.Zone());
    	//返回时间戳
    	fmt.Println(t5.Unix());
    	//返回纳秒时间戳
    	fmt.Println(t5.UnixNano());
    
    	//时间的比较与计算
    	t6 := time.Now();
    	//是否零时时间
    	fmt.Println(t6.IsZero());
    	//t6时间在t5时间之后,返回真
    	fmt.Println(t6.After(t5));
    	//t5时间在t6时间之前,返回真
    	fmt.Println(t5.Before(t6));
    	//时间是否相同
    	fmt.Println(t6.Equal(t6));
    	//返回t6加上纳秒的时间
    	fmt.Println(t6.Add(10000));
    	//返回两个时间之差的纳秒数
    	fmt.Println(t6.Sub(t5));
    	//返回t6加1年,1月,1天的时间
    	fmt.Println(t6.AddDate(1, 1, 1));
    
    	//时间的序列化
    	t7 := time.Now();
    	//序列化二进制
    	bin, _ := t7.MarshalBinary();
    	//反序列化二进制
    	t7.UnmarshalBinary(bin)
    	fmt.Println(t7);
    	//序列化json
    	json, _ := t7.MarshalJSON();
    	fmt.Println(string(json));
    	//反序列化json
    	t7.UnmarshalJSON(json);
    	fmt.Println(t7);
    	//序列化文本
    	txt, _ := t7.MarshalText();
    	fmt.Println(string(txt));
    	//反序列化文本
    	t7.UnmarshalText(txt);
    	fmt.Println(t7);
    	//gob编码
    	gob, _ := t7.GobEncode();
    	t7.GobDecode(gob);
    	fmt.Println(t7);
    
    	//时间段time.Duration
    	dur := time.Duration(6666666600000);
    	//返回字符串表示
    	fmt.Println(dur.String());
    	//返回小时表示
    	fmt.Println(dur.Hours());
    	//返回分钟表示
    	fmt.Println(dur.Minutes());
    	//返回秒表示
    	fmt.Println(dur.Seconds());
    	//返回纳秒表示
    	fmt.Println(dur.Nanoseconds());
    
    	//时区time.Location
    	//返回时区名
    	fmt.Println(time.Local.String());
    
    	//通过地点名和时间偏移量返回时区
    	fmt.Println(time.FixedZone("Shanghai", 800));
    
    	//通过给定时区名称,返回时区
    	loc, _ := time.LoadLocation("Asia/Shanghai");
    	fmt.Println(loc);
    
    	//阻塞当前进程3秒
    	time.Sleep(time.Second * 3);
    
    	//定时器time.Timer
    	//创建一个1秒后触发定时器
    	timer1 := time.NewTimer(time.Second * 1);
    	<-timer1.C;
    	fmt.Println("timer1 end");
    
    	//1秒后运行函数
    	time.AfterFunc(time.Second * 1, func() {
    		fmt.Println("wait 1 second");
    	});
    	time.Sleep(time.Second * 3);
    
    	//打点器time.Ticker
    	//创建一个打点器,在固定1秒内重复执行
    	ticker := time.NewTicker(time.Second);
    	num := 1;
    	for {
    		if num > 5 {
    			//大于5次关闭打点器
    			ticker.Stop();
    			break;
    		}
    		//否则从打点器中获取chan
    		select {
    		case <-ticker.C:
    			num++;
    			fmt.Println("1 second...");
    		}
    	}
    }
    

      

  • 相关阅读:
    Grid++Report 报表开发工具
    docker(1):virtualbox 安装CoreOS系统,配置registry-mirror
    [Network]Introduction and Basic concepts
    Java进程堆外内存(off heap)大小
    可设置指定时间自己主动消失的 MessageBox实现
    《iOS Human Interface Guidelines》——Wallet
    什么是OpenStack
    Filters.h各种信号恢复滤波器头文件
    Android时间轴效果,直接使用在你的项目中
    浅析C++多重继承
  • 原文地址:https://www.cnblogs.com/jkko123/p/6909368.html
Copyright © 2011-2022 走看看