golang日期时间格式化处理插件库kair的使用
Golang日期时间格式化处理插件库kair的使用
Kair是一个Golang的日期时间格式化处理库,提供了简单易用的API来处理日期和时间的格式化。
安装
可以通过以下方式安装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在设计时考虑了性能因素,但对于高频调用的场景,建议:
- 复用time.Time对象
- 对于固定格式,预编译格式字符串
- 在高并发场景下考虑使用sync.Pool
总结
Kair提供了简单直观的API来处理Golang中的日期时间操作,特别适合需要复杂格式化或从其他语言(如PHP)迁移的项目。它的主要优势包括:
- 易记的格式化符号
- 完整的日期时间计算功能
- 本地化支持
- 相对时间显示
对于更复杂的需求,可以结合标准库的time包一起使用。