我目前正在尝试获取一个 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)
最佳答案
不,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))
}
关于go - 使用 Go 的 time.Format 时转义数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51312165/