登录
首页 >  Golang >  Go问答

如何使用 time.Format() 获取序数指示器?

来源:stackoverflow

时间:2024-04-28 08:39:39 360浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《如何使用 time.Format() 获取序数指示器?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

time.Format() 方法会将参数 January 2, 2006 解析为输出 June 20, 2021,但不会将 January 2nd, 2006 解析为 June 20th, 2021 并改为输出 June 20nd, 2021.

我如何告诉它使用正确的序数指示符:st/nd/rd/th 后缀?我没有看到文档中提到它。


正确答案


标准库中不支持序数指示符。您可以通过此 answer 的帮助自行实现相同的功能,也可以使用第三方软件包。

go 有一个第三方包可以将输入整数转换为具有正确序数指示符的字符串;看看go-humanize

此外,如果您深入了解 go-humanize 对序数指示符的支持的实现;您会注意到这非常简单,所以我更愿意通过参考我链接的两个实现来自己实现它。参考:https://github.com/dustin/go-humanize/blob/v1.0.0/ordinals.go#L8

或者,使用 go-humanize。

要添加右序数指示符:st/nd/rd/th 后缀,您可以使用 switch case 。我创建了一个示例程序来打印所有日期月份及其各自的后缀如下:

package main

import (
    "fmt"
)

func getdaysuffix(n int) string {

    if n >= 11 && n <= 13 {
        return "th"
    } else {

        switch n % 10 {
        case 1:
            return "st"
        case 2:
            return "nd"
        case 3:
            return "rd"
        default:
            return "th"
        }
    }
}

func main() {

    for i := 1; i < 32; i++ {
        suf := getdaysuffix(i)
        fmt.println(i, suf)

    }

}

输出:

1 st
2 nd
3 rd
4 th
5 th
6 th
7 th
8 th
9 th
10 th
11 th
12 th
13 th
14 th
15 th
16 th
17 th
18 th
19 th
20 th
21 st
22 nd
23 rd
24 th
25 th
26 th
27 th
28 th
29 th
30 th
31 st

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>