mirror of
https://gitee.com/johng/gf
synced 2026-06-07 10:22:11 +08:00
改进gtime.Format支持中文
This commit is contained in:
@ -104,39 +104,41 @@ func formatToRegexPattern(format string) string {
|
||||
|
||||
// 格式化,使用自定义日期格式
|
||||
func (t *Time) Format(format string) string {
|
||||
s := ""
|
||||
for i := 0; i < len(format); {
|
||||
switch format[i] {
|
||||
runes := []rune(format)
|
||||
buffer := bytes.NewBuffer(nil)
|
||||
for i := 0; i < len(runes); {
|
||||
switch runes[i] {
|
||||
case '\\':
|
||||
if i < len(format) - 1 {
|
||||
s += string(format[i + 1])
|
||||
if i < len(runes) - 1 {
|
||||
buffer.WriteRune(runes[i + 1])
|
||||
i += 2
|
||||
continue
|
||||
} else {
|
||||
return s
|
||||
return buffer.String()
|
||||
}
|
||||
|
||||
default:
|
||||
if f, ok := formats[format[i]]; ok {
|
||||
r := t.Time.Format(f)
|
||||
if runes[i] > 255 {
|
||||
buffer.WriteRune(runes[i])
|
||||
break
|
||||
}
|
||||
if f, ok := formats[byte(runes[i])]; ok {
|
||||
result := t.Time.Format(f)
|
||||
// 有几个转换的符号需要特殊处理
|
||||
switch format[i] {
|
||||
case 'j':
|
||||
s += strings.Replace(r, "=j=0", "", -1)
|
||||
case 'G':
|
||||
s += strings.Replace(r, "=G=0", "", -1)
|
||||
case 'u':
|
||||
s += strings.Replace(r, "=u=.", "", -1)
|
||||
switch runes[i] {
|
||||
case 'j': buffer.WriteString(strings.Replace(result, "=j=0", "", -1))
|
||||
case 'G': buffer.WriteString(strings.Replace(result, "=G=0", "", -1))
|
||||
case 'u': buffer.WriteString(strings.Replace(result, "=u=.", "", -1))
|
||||
default:
|
||||
s += r
|
||||
buffer.WriteString(result)
|
||||
}
|
||||
} else {
|
||||
s += string(format[i])
|
||||
buffer.WriteRune(runes[i])
|
||||
}
|
||||
}
|
||||
i++
|
||||
}
|
||||
return s
|
||||
return buffer.String()
|
||||
}
|
||||
|
||||
// 格式化,使用标准库格式
|
||||
|
||||
@ -2,62 +2,9 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gitee.com/johng/gf/g/encoding/gjson"
|
||||
"gitee.com/johng/gf/g/util/gconv"
|
||||
"gitee.com/johng/gf/g/os/gtime"
|
||||
)
|
||||
|
||||
func main() {
|
||||
s := `title = "TOML Example"
|
||||
|
||||
[owner]
|
||||
name = "Tom Preston-Werner"
|
||||
dob = 1979-05-27T07:32:00-08:00 # First class dates
|
||||
|
||||
[database]
|
||||
server = "192.168.1.1"
|
||||
ports = [ 8001, 8001, 8002 ]
|
||||
connection_max = 5000
|
||||
enabled = true
|
||||
|
||||
[servers]
|
||||
|
||||
# Indentation (tabs and/or spaces) is allowed but not required
|
||||
[servers.alpha]
|
||||
ip = "10.0.0.1"
|
||||
dc = "eqdc10"
|
||||
|
||||
[servers.beta]
|
||||
ip = "10.0.0.2"
|
||||
dc = "eqdc10"
|
||||
|
||||
[clients]
|
||||
data = [ ["gamma", "delta"], [1, 2] ]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
test = 1
|
||||
# Line breaks are OK when inside arrays
|
||||
hosts = [
|
||||
"alpha",
|
||||
"omega"
|
||||
]`
|
||||
j, err := gjson.LoadContent([]byte(s), "toml")
|
||||
fmt.Println(err)
|
||||
fmt.Println(gconv.Strings(j.GetStrings("servers")))
|
||||
fmt.Println(gtime.Now().Format("Y年m月d日 H时i分s秒"))
|
||||
}
|
||||
Reference in New Issue
Block a user