golang time foramt

本文深入探讨了使用Go语言进行时间处理的方法,包括时间戳的获取、时间格式化为字符串、从字符串解析时间以及使用各种标准格式。通过实例展示了如何利用time包的功能,如time.Now()、time.Unix()和time.Parse()等,进行高效的时间操作。
func main() {

//获取时间戳
timestamp := time.Now().Unix()
fmt.Println(timestamp)

//格式化为字符串,tm为Time类型
tm := time.Unix(timestamp, 0)

fmt.Println(tm.Format("2006-01-02 03:04:05 PM"))
fmt.Println(tm.Format("02/01/2006 15:04:05 PM"))

//从字符串转为时间戳,第一个参数是格式,第二个是要转换的时间字符串
tm2, _ := time.Parse("01/02/2006", "02/08/2015")

fmt.Println(tm2.Unix())
}
 
输出结果:
1423361979
2015-02-08 10:19:39 AM
08/02/2015 10:19:39 AM
1423353600
// Go supports time formatting and parsing via
// pattern-based layouts.

package main

import "fmt"
import "time"

func main() {
    p := fmt.Println

    t := time.Now()
    p(t.Format(time.RFC3339))

    t1, e := time.Parse(
        time.RFC3339,
        "2012-11-01T22:08:41+00:00")
    p(t1)
    
    p(t.Format("3:04PM"))
    p(t.Format("Mon Jan _2 15:04:05 2006"))
    p(t.Format("2006-01-02T15:04:05.999999-07:00"))
    form := "3 04 PM"
    t2, e := time.Parse(form, "8 41 PM")
    p(t2)

    fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

    ansic := "Mon Jan _2 15:04:05 2006"
    _, e = time.Parse(ansic, "8:41PM")
    p(e)
}


2009-11-10T23:00:00Z
2012-11-01 22:08:41 +0000 UTC
11:00PM
Tue Nov 10 23:00:00 2009
2009-11-10T23:00:00+00:00
0000-01-01 20:41:00 +0000 UTC
2009-11-10T23:00:00-00:00
parsing time "8:41PM" as "Mon Jan _2 15:04:05 2006": cannot parse "8:41PM" as "Mon"
### Golang 中 `time` 包的用法与示例 Golang 的 `time` 包提供了丰富的功能来处理时间相关的操作,包括获取当前时间、计算时间差、定时器以及间隔执行等功能。以下是关于该包的一些常见用法及其例子。 #### 获取当前时间 通过调用 `time.Now()` 方法可以轻松获得当前的时间戳对象。此方法返回的是一个 `Time` 类型的对象,包含了日期和时间的信息。 ```go now := time.Now() fmt.Println("Current Time:", now) ``` #### 时间格式化 为了将时间转换为字符串形式或者解析字符串到时间对象,可以利用预定义布局常量如 `time.RFC3339` 或者自定义布局模式来进行格式化。 ```go formattedTime := now.Format(time.RFC3339) fmt.Println("Formatted Time (RFC3339):", formattedTime) customLayout := "02-Jan-2006 15:04" customFormattedTime := now.Format(customLayout) fmt.Println("Custom Formatted Time:", customFormattedTime) ``` #### 计算两个时间之间的差异 可以通过简单的减法运算符 `-` 来得到两个时间点之间相差的具体秒数或者其他单位的数量。 ```go later := now.Add(5 * time.Minute) // 增加五分钟后的时刻 diff := later.Sub(now).Minutes() fmt.Printf("Difference in Minutes:%v\n", diff) ``` #### 使用 Timer 和 Ticker 实现延迟或周期性任务调度 对于需要等待一段时间再继续运行的任务来说,Timer 是非常有用的工具;而如果希望每隔固定时间段重复做某件事,则应该考虑使用Ticker[^1]。 ```go // 创建一个新的计时器设置为两秒钟超时. timer := time.NewTimer(2 * time.Second) <-timer.C fmt.Println("Two seconds have passed") ticker := time.NewTicker(500 * time.Millisecond) done := make(chan bool) go func(){ for t:= range ticker.C{ fmt.Println("Tick at ",t) } }() time.Sleep(1600*time.Millisecond) ticker.Stop() close(done) fmt.Println("Ticker stopped.") ``` 尽管上述内容涵盖了大部分基本需求,但在实际开发过程中还可能遇到更复杂的情况比如跨时区调整等问题[^2], 这就需要进一步深入研究官方文档并结合具体应用场景灵活运用了.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值