golang日期时间格式化处理插件库kair的使用

Golang日期时间格式化处理插件库kair的使用

Kair是一个Golang的日期时间格式化处理库,提供了简单易用的API来处理日期和时间的格式化。

Kair Logo

安装

可以通过以下方式安装Kair库:

Go CLI

go get github.com/GuilhermeCaruso/kair

Go DEP

dep ensure -add github.com/GuilhermeCaruso/kair

Govendor

govendor fetch github.com/GuilhermeCaruso/kair

使用示例

package main

import (
	"fmt"

	k "github.com/GuilhermeCaruso/kair"
)

func main() {
	// 获取当前时间
	now := k.Now()

    // 自定义格式输出当前时间
    fmt.Printf("当前时间是 %s \n", now.CustomFormat("dd/MM/YYYY hh:mm:ss"))

	// 创建特定日期
	date := k.Date(29, 05, 1980)

	// 使用不同格式输出日期信息
	fmt.Printf("日期 %s 是 %s 在 %s\n",
		date.Format("L"),          // 标准日期格式
		date.CustomFormat("DD"),   // 星期几
        date.CustomFormat("MMMM")) // 月份
	// 输出: 日期 29/05/1980 是 Thursday 在 May
}

格式化选项

标准格式

"LT":   10:20 AM,
"LTS":  10:20:00 AM,
"L":    20/05/2018,
"l":    20/5/2018,
"LL":   May 20, 2018,
"ll":   May 20, 2018,
"LLL":  May 20, 2018 10:20 AM,
"lll":  May 20, 2018 10:20 AM,
"LLLL": Sunday, May 20, 2018 10:20 AM,
"llll": Sun, May 20, 2018 10:20 AM,
"":     2018-05-20 10:20:00 +0000 UTC,

自定义格式

"MMMM": Long Month,    // 完整月份名称
"MMM":  Month,         // 缩写月份名称
"MM":   Zero Number Month, // 补零的月份数字
"M":    Number Month,  // 月份数字
"YYYY": Long Year,     // 4位数年份
"YY":   Year,          // 2位数年份
"DD":   Long Day,      // 完整星期名称
"D":    Day,           // 缩写星期名称
"dd":   Long Number Day, // 补零的日期数字
"d":    Number Day,    // 日期数字
"hh":   Long Hour,     // 补零的小时(12小时制)
"h":    Hour,          // 小时(12小时制)
"mm":   Long Minute,   // 补零的分钟
"m":    Minute,        // 分钟
"ss":   Long Second,   // 补零的秒
"s":    Second         // 秒

待实现功能

  • [x] 实现标准格式
  • [x] 实现自定义格式
  • [x] 实现Now(), Date()和DateTime()初始化方法
  • [ ] 实现相对时间(FromNow, StartOf…)
  • [ ] 实现日历时间(添加, 减去, 日历)

许可证

MIT License © Guilherme Caruso


更多关于golang日期时间格式化处理插件库kair的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang日期时间格式化处理插件库kair的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Kair - Golang日期时间处理库

Kair是一个轻量级的Golang日期时间处理库,提供了简洁易用的API来处理日期时间的格式化、解析、计算等操作。下面我将详细介绍Kair的主要功能和使用方法。

安装

go get github.com/GuilhermeCaruso/kair

基本用法

1. 日期时间格式化

Kair使用类似于PHP date函数的格式化字符串:

package main

import (
	"fmt"
	"github.com/GuilhermeCaruso/kair"
	"time"
)

func main() {
	now := time.Now()
	
	// 使用Kair格式化
	fmt.Println(kair.Format("Y-m-d H:i:s", now)) // 输出: 2023-03-15 14:30:45
	fmt.Println(kair.Format("d/m/Y", now))       // 输出: 15/03/2023
	fmt.Println(kair.Format("H:i A", now))       // 输出: 14:30 PM
}

2. 日期时间解析

package main

import (
	"fmt"
	"github.com/GuilhermeCaruso/kair"
)

func main() {
	// 解析日期字符串
	t, err := kair.Parse("Y-m-d H:i:s", "2023-03-15 14:30:45")
	if err != nil {
		fmt.Println("解析错误:", err)
		return
	}
	fmt.Println(t) // 输出解析后的time.Time对象
}

3. 日期时间计算

package main

import (
	"fmt"
	"github.com/GuilhermeCaruso/kair"
	"time"
)

func main() {
	now := time.Now()
	
	// 增加时间
	future := kair.Add(now, kair.DateInterval{Days: 5, Hours: 2})
	fmt.Println("5天2小时后:", future)
	
	// 减少时间
	past := kair.Sub(now, kair.DateInterval{Months: 1, Minutes: 30})
	fmt.Println("1个月30分钟前:", past)
}

格式化符号参考

符号 说明 示例
Y 4位年份 2023
y 2位年份 23
m 月份(01-12) 03
n 月份(1-12) 3
d 日期(01-31) 05
j 日期(1-31) 5
H 24小时制小时(00-23) 14
h 12小时制小时(01-12) 02
i 分钟(00-59) 05
s 秒(00-59) 07
A 大写的上午/下午 AM or PM
a 小写的上午/下午 am or pm

高级用法

1. 自定义本地化

package main

import (
	"fmt"
	"github.com/GuilhermeCaruso/kair"
	"time"
)

func main() {
	// 设置自定义月份和星期名称
	kair.SetLocale(kair.Locale{
		MonthNames: []string{
			"一月", "二月", "三月", "四月", "五月", "六月",
			"七月", "八月", "九月", "十月", "十一月", "十二月",
		},
		WeekdayNames: []string{
			"周日", "周一", "周二", "周三", "周四", "周五", "周六",
		},
	})
	
	now := time.Now()
	fmt.Println(kair.Format("Y年m月d日 D", now)) // 输出: 2023年03月15日 周三
}

2. 相对时间显示

package main

import (
	"fmt"
	"github.com/GuilhermeCaruso/kair"
	"time"
)

func main() {
	now := time.Now()
	
	// 5分钟前
	past := now.Add(-5 * time.Minute)
	fmt.Println(kair.RelativeTime(past, now)) // 输出: 5分钟前
	
	// 2小时后
	future := now.Add(2 * time.Hour)
	fmt.Println(kair.RelativeTime(future, now)) // 输出: 2小时后
}

性能考虑

Kair在设计时考虑了性能因素,但对于高频调用的场景,建议:

  1. 复用time.Time对象
  2. 对于固定格式,预编译格式字符串
  3. 在高并发场景下考虑使用sync.Pool

总结

Kair提供了简单直观的API来处理Golang中的日期时间操作,特别适合需要复杂格式化或从其他语言(如PHP)迁移的项目。它的主要优势包括:

  1. 易记的格式化符号
  2. 完整的日期时间计算功能
  3. 本地化支持
  4. 相对时间显示

对于更复杂的需求,可以结合标准库的time包一起使用。

回到顶部