Go 的 time.Format 输出空字符串或 panic 是因 layout 字符串错误必须用固定模板“2006-01-02 15:04:05”错一位、空格、大小写或时区处理不当均导致异常。Go 里 time.Format 为什么总输出空字符串或 panic因为没传对 layout 字符串——Go 的时间格式化不用 yyyy-MM-dd HH:mm:ss 这种常见写法而是用一个固定的时间值 2006-01-02 15:04:05 作模板。错一个数字、多一个空格、大小写不对比如 Mon → monFormat 就会静默返回空字符串不报错也不提示。time.Now().Format(2006-01-02 15:04:05) ? 正确time.Now().Format(YYYY-MM-DD HH:mm:ss) ? 空字符串time.Now().Format(2006-01-02 3:04:05 PM) ? 可以但注意 3 不带前导零15 才带中文 weekday如“星期一”不支持直接 layout得用 Weekday().String() 拼接时区没处理好Format 输出时间和你预期差 8 小时Go 的 time.Time 默认带时区信息time.Now() 返回的是本地时区时间但如果你从字符串解析time.Parse默认按 UTC 解析再 Format 就容易错位。确认当前时间的时区t.Location().String()常见是 Local 或 UTC想强制转为北京时间t.In(time.FixedZone(CST, 8*60*60))解析字符串时指定时区更稳妥time.ParseInLocation(layout, s, time.Local)Web API 常用 RFC33392006-01-02T15:04:05Z07:00它自带时区偏移Format 出来也带偏移别硬套无偏移 layout性能敏感场景下反复调用 Format 有没有隐患Format 是纯内存操作单次开销极小但高频调用比如每毫秒日志打点仍可能成为微小瓶颈尤其 layout 字符串长、含多个子模板时。 有道翻译AI助手 有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻