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\n" , t);
     //反回所在时区
     fmt.Printf( "%v\n" , t.Location());
     //返回UTC时间和UTC时区
     fmt.Printf( "%v %v\n" , t.UTC(), t.UTC().Location());
     //同上,In()返回指定时区的时间
     fmt.Printf( "%v %v\n" , t.In(time.UTC), t.In(time.UTC).Location());
     //返回当地时区的时间
     fmt.Printf( "%v %v\n" , 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..." );
         }
     }
}

猜你喜欢

转载自www.cnblogs.com/smallleiit/p/10303520.html