我目前正在尝试获取一个time.Time
对象,并生成一个格式化的字符串,该字符串恰好包含一些我不想被解析为时间的数字。例如,考虑以下程序:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
msg := now.Format("Encountered a 502 error on 2006-01-02 15:02 MST")
fmt.Println(msg)
}
不幸的是,此处的文本“ 502”被解释为时间:运行此代码将产生类似Encountered a 1112 error on 2018-07-12 9:12 UTC
的输出。
有什么办法可以逃脱502个数字,因此它们不会被解释为数字?例如。类似于您如何在实现strftime样式格式逻辑的语言中使用%
来逃脱%%
元字符?
还是我唯一的选择就是将其拆分并使用两个格式化操作而不是一个?
nowString := now.Format("2006-01-02 15:02 MST")
msg := fmt.Sprintf("Encountered 502 error on %s", nowString)
答案 0 :(得分:1)
否,time.Format
中的数字不能转义。该方法的目的是格式化时间,而不是通常用于格式化字符串。
如果从多个位置使用它,通常的解决方案是制作一个简单的函数来进行格式化
func nowMessage(msg string) string {
const layout = "2006-01-02 15:02 MST"
return fmt.Sprintf("%s %s", msg, time.Now().Format(layout))
}