time包 — 汇总

time包学习

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...");
        }
    }
}

  

原文地址:https://www.cnblogs.com/yorkyang/p/12047216.html

时间: 2024-10-17 02:31:32

time包 — 汇总的相关文章

国内外各种建站免费面板和一键包汇总

面板类: 国外: VestaCP:http://vestacp.com/ (比较推荐的面板,自带中文)Kloxo-MR:https://github.com/mustafaramadhan/kloxo/ (7.0真的很强大,很好看,很实用,有中文包)Webmin/Virtualmin:http://www.webmin.com/virtualmin.html (很稳定,很安全,自带中文)Ispconfig:https://github.com/dclardy64/ISPConfig-3-Debi

strings包 — 汇总

转自:https://www.jb51.net/article/148388.htm strings 包中的函数和方法 // Count 计算字符串 sep 在 s 中的非重叠个数 // 如果 sep 为空字符串,则返回 s 中的字符(非字节)个数 + 1 // 使用 Rabin-Karp 算法实现 func Count(s, sep string) int func main() { s := "Hello,世界!!!!!" n := strings.Count(s, "!

sync包 — 汇总

sync包 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.Print

path包 + pathfile 包 — 汇总

path包的使用 package main; import ( "fmt" "path" ) //go语言path包的学习 func main() { //返回路径的最后一个元素 fmt.Println(path.Base("./a/b/c")); //如果路径为空字符串,返回. fmt.Println(path.Base("")); //如果路径只有斜线,返回/ fmt.Println(path.Base("///

Android笔记——Android Support兼容包汇总与浅析

博客园这边的审核过不了,不知道我的什么言辞涉及到了违禁,已发布至csdn http://blog.csdn.net/devtrees/article/details/44850643

项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里

当一个普通的项目,在不适用maven 等jar包管理工具的时候,通常我都会直接把jar 包复制lib下,并且在build path 中直接添加额外jar包,或者使用user_libraries包所用的jar包 都放到一个文件夹里,然后让项目依赖该user_libraries 包.如果我又新建了一个项目,但是只有部分jar 包不一样或者版本不一样,通常我会再次新建一个文件夹把这些jar 放进去, 如果jar包出现问题我要一个个去翻看lib下的文件,看着很不方便,也不方便管理. 有没有像maven

数据包级网络遥测和网络安全推送分析

随着网络规模,复杂性和流量的增长,对连续和精确监控的需求比以往任何时候都要大.持续监控是检测安全问题,错误配置,设备故障以及执行流量工程的重要部分. 在最高级别,它是一种基于推送的监控方法:数据平面设备(如交换机和路由器)将有关流量和性能的数据流式传输到执行分析的软件.网络遥测正在成为支持这些需求的有力方式. 今天的遥测系统迫使用户在粒度和覆盖范围之间进行选择.分组级系统将每个分组(或报头)流式传输到软件.这提供了细粒度的可见性,但是在软件中处理每个数据包的成本使得高覆盖率变得不切实际.流级系统

java8 十大新特性

这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API仍然有可能改变,我会尽我最大的努力保持这份文档跟得到Java 8的改动. Java 8的预览版,也就是 “Project Lambda”,现在可以从java.net下载到. 我使用了IntelliJ的预览版做我的IDE,在我看来他是目前支持java 8特性最好的一个IDE,你可以从这里下载到. 由于

成人网站性能提升 20 倍之经验谈 [Python]

色情业是个大行业.互联网上没有多少网站的流量能和最大的色情网站相匹敌. 要搞定这巨大的流量很难.更困难的是,在色情网站上提供的很多内容都是低延迟的实时流媒体而不是简单的静态视频.但是对于所有碰到过的挑战,我很少看到有搞定过它们的开发人员写的东西.所以我决定把自己在这方面的经验写出来.  问题是什么? 几年前,我正在为当时全世界访问量排名26的网站工作 - 这里不是说的色情网站排名,而是全世界排名. 当时,该网站通过RTMP(Real Time Messaging protocol)协议响应对色情