diff --git a/g/os/gtime/gtime_format.go b/g/os/gtime/gtime_format.go index 2005cac54..a0c9a9366 100644 --- a/g/os/gtime/gtime_format.go +++ b/g/os/gtime/gtime_format.go @@ -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() } // 格式化,使用标准库格式 diff --git a/geg/other/test.go b/geg/other/test.go index 51d954899..3753125c9 100644 --- a/geg/other/test.go +++ b/geg/other/test.go @@ -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秒")) } \ No newline at end of file