diff --git a/g/os/gtime/gtime_format.go b/g/os/gtime/gtime_format.go index 97d45255f..6b32cf9b4 100644 --- a/g/os/gtime/gtime_format.go +++ b/g/os/gtime/gtime_format.go @@ -8,6 +8,7 @@ package gtime import ( "strings" + "bytes" ) var ( @@ -53,41 +54,42 @@ var ( // 将自定义的格式转换为标准库时间格式 func formatToStdLayout(format string) string { - s := "" + b := bytes.NewBuffer(nil) for i := 0; i < len(format); { switch format[i] { case '\\': - if i < len(format)-1 { - s += string(format[i+1]) + if i < len(format) - 1 { + b.WriteByte(format[i + 1]) i += 2 continue } else { - return s + return b.String() } default: if f, ok := formats[format[i]]; ok { switch format[i] { case 'j': - s += "02" + b.WriteString("02") case 'G': - s += "15" + b.WriteString("15") case 'u': if i > 0 && format[i - 1] == '.' { - s += "000" + b.WriteString("000") } else { - s += ".000" + b.WriteString(".000") } default: - s += f + b.WriteString(f) } } else { - s += f + b.WriteByte(format[i]) } + i++ } } - return s + return b.String() } // 格式化,使用自定义日期格式 diff --git a/geg/os/gtime/gtime_strtotime2.go b/geg/os/gtime/gtime_strtotime2.go new file mode 100644 index 000000000..cbade67d6 --- /dev/null +++ b/geg/os/gtime/gtime_strtotime2.go @@ -0,0 +1,14 @@ +package main + +import ( + "fmt" + "gitee.com/johng/gf/g/os/gtime" +) + +func main() { + if t, err := gtime.StrToTimeFormat("Tue Oct 16 15:55:59 CST 2018", "D M d H:i:s T Y"); err == nil { + fmt.Println(t.String()) + } else { + panic(err) + } +}