使用 Go 时转义数字 time.Format
Escaping numbers when using Go's time.Format
我目前正在尝试获取一个 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))
}
我目前正在尝试获取一个 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))
}