From 6d7d8dec0278f98b614c0384d61320c53f04f50d Mon Sep 17 00:00:00 2001 From: jroam Date: Sun, 28 Apr 2019 22:53:03 +0800 Subject: [PATCH] add var 'e' of gtime.format --- g/os/gtime/gtime_format.go | 16 +++++++++++++++- g/os/gtime/gtime_z_unit_format_test.go | 13 +++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/g/os/gtime/gtime_format.go b/g/os/gtime/gtime_format.go index b3a78b151..692ff3ddb 100644 --- a/g/os/gtime/gtime_format.go +++ b/g/os/gtime/gtime_format.go @@ -12,6 +12,7 @@ import ( "github.com/gogf/gf/g/text/gstr" "strconv" "strings" + "time" ) var ( @@ -54,6 +55,7 @@ var ( 'O': "-0700", // 与UTC相差的小时数, 例如:+0200 'P': "-07:00", // 与UTC的差别,小时和分钟之间有冒号分隔, 例如:+02:00 'T': "MST", // 时区缩写, 例如:UTC,GMT,CST //原来这里是MST会与php中的T获得的结果不一样。修改为CST时,就保持一致 + 'e': "", // 时区缩写, 例如:UTC,GMT,CST ,这与当前操作系统有关 // ================== 完整的日期/时间 ================== 'c': "2006-01-02T15:04:05-07:00", // ISO 8601 格式的日期,例如:2004-02-12T15:19:21+00:00 @@ -174,6 +176,8 @@ func (t *Time) Format(format string) string { buffer.WriteString(strconv.Itoa(dayOfYear(t))) case 't': buffer.WriteString(strconv.Itoa(daysInMonth(t))) + case 'e': + buffer.WriteString(zeroLocation()) default: buffer.WriteString(result) } @@ -240,11 +244,21 @@ func daysInMonth(t *Time) int { // 获取时间点在本年内是第多少周 func weeksOfYear(t *Time) int { - _,nums:=t.ISOWeek() + _, nums := t.ISOWeek() return nums } +func zeroLocation() string { + + location, err := time.LoadLocation("") + if err != nil { + return "" + } + return location.String() + +} + //格式化使用标准库格式 func (t *Time) Layout(layout string) string { return t.Time.Format(layout) diff --git a/g/os/gtime/gtime_z_unit_format_test.go b/g/os/gtime/gtime_z_unit_format_test.go index 7625a16ff..00836f93e 100644 --- a/g/os/gtime/gtime_z_unit_format_test.go +++ b/g/os/gtime/gtime_z_unit_format_test.go @@ -61,18 +61,19 @@ func Test_Format(t *testing.T) { {"k": "2019-01-05", "f": "第z天", "r": "第4天"}, {"k": "2020-05-05", "f": "第z天", "r": "第125天"}, {"k": "2020-12-31", "f": "第z天", "r": "第365天"}, //润年 - {"k": "2020-02-12", "f": "第z天", "r": "第42天"}, //润年 + {"k": "2020-02-12", "f": "第z天", "r": "第42天"}, //润年 {"k": "2019-02-12", "f": "有t天", "r": "有28天"}, {"k": "2020-02-12", "f": "20.2有t天", "r": "20.2有29天"}, {"k": "2019-03-12", "f": "19.3有t天", "r": "19.3有31天"}, {"k": "2019-11-12", "f": "19.11有t天", "r": "19.11有30天"}, {"k": "2019-01-01", "f": "第W周", "r": "第1周"}, - {"k": "2017-01-01", "f": "第W周", "r": "第52周"},//星期7 - {"k": "2002-01-01", "f": "第W周为星期2", "r": "第1周为星期2"},//星期2 + {"k": "2017-01-01", "f": "第W周", "r": "第52周"}, //星期7 + {"k": "2002-01-01", "f": "第W周为星期2", "r": "第1周为星期2"}, //星期2 {"k": "2016-01-01", "f": "第W周为星期5", "r": "第53周为星期5"}, //星期5 - {"k": "2014-01-01", "f": "第W周为星期3", "r": "第1周为星期3"}, //星期3 - {"k": "2015-01-01", "f": "第W周为星期4", "r": "第1周为星期4"}, //星期4 - {"k": "2015-01-01", "f": "时区T", "r": "时区PRC"}, //星期4 + {"k": "2014-01-01", "f": "第W周为星期3", "r": "第1周为星期3"}, //星期3 + {"k": "2015-01-01", "f": "第W周为星期4", "r": "第1周为星期4"}, //星期4 + {"k": "2015-01-01", "f": "时区T", "r": "时区CST"}, + {"k": "2015-01-01", "f": "时区e", "r": "时区UTC"}, } for _, v := range times {