> 백엔드 개발 > Golang > Golang에서 시간대를 기준으로 시간 형식을 지정하는 방법은 무엇입니까?

Golang에서 시간대를 기준으로 시간 형식을 지정하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-06-01 15:28:01
원래의
882명이 탐색했습니다.

Go 언어의 시간 패키지는 시간 레이아웃과 시간대 정보를 통해 시간 형식을 지정할 수 있습니다. 먼저 time.LoadLocation 함수를 통해 얻을 수 있는 시간대 정보를 로드합니다. 둘째, 언어 및 지역 패키지를 사용하여 시간대 레이아웃 문자열을 로드합니다. 마지막으로 time.Format 함수를 호출하여 지정된 레이아웃과 시간대에 따라 시간 형식을 지정합니다.

如何用 Golang 根据时区格式化时间?

Golang을 사용하여 시간대에 따라 시간 형식 지정

Go 언어에서 일반적으로 사용되는 time 包提供了 Format 函数,可用于按照指定的布局格式化时间。其中,布局字符串可以通过 LoadLocation 함수는 특정 시간대에 대한 시간대 정보를 로드하여 시간대에 따라 시간 형식을 지정하는 데 사용됩니다.

시간대 정보 로드

import (
    "fmt"
    "time"

    "golang.org/x/text/language"
    "golang.org/x/text/region"
)

func main() {
    // 创建一个代表特定时区的 Location 对象
    loc, err := time.LoadLocation("Asia/Shanghai")
    if err != nil {
        fmt.Println(err)
        return
    }

    // 使用 Location 对象加载时区的布局字符串
    layout, err := time.LoadLayoutIn(language.English, region.CN, "Monday, January 2, 2006")
    if err != nil {
        fmt.Println(err)
        return
    }
}
로그인 후 복사

시간 형식 지정

// 将当前时间根据时区信息格式化为字符串
now := time.Now().In(loc)
formattedTime := now.Format(layout)
fmt.Println(formattedTime)
로그인 후 복사

출력:

Monday, January 2, 2023
로그인 후 복사

실용 사례: 사용자가 입력한 시간 형식 지정

수집해야 할 웹 서비스가 있다고 가정합니다. 사용자의 시간대에 따라 형식이 지정된 사용자 시간 데이터에서. 다음은 Go 언어를 사용하여 구현할 수 있는 샘플 코드입니다.

package main

import (
    "fmt"
    "html/template"
    "net/http"
    "time"

    "golang.org/x/text/language"
    "golang.org/x/text/region"
)

// 结构体用来存储用户输入的时间和时区
type TimeInput struct {
    Time     string
    TimeZone string
}

func main() {
    // 创建一个 HTML 模板
    tmpl := template.Must(template.New("timeinput").Parse(`
        <form action="/format" method="post">
            <label for="time">Time (YYYY-MM-DD HH:MM:SS):</label>
            <input type="text" name="time" id="time">
            <br>
            <label for="timezone">Time Zone:</label>
            <select name="timezone" id="timezone">
                <option value="Asia/Shanghai">Asia/Shanghai</option>
                <option value="America/New_York">America/New_York</option>
                <option value="Europe/London">Europe/London</option>
            </select>
            <br>
            <input type="submit" value="Format">
        </form>
        <h2>Formatted Time: {{ .FormattedTime }}</h2>
    `))

    // 定义处理用户请求的 HTTP 处理函数
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if r.Method == http.MethodGet {
            if err := tmpl.Execute(w, nil); err != nil {
                http.Error(w, "Error rendering template", http.StatusInternalServerError)
            }
        } else if r.Method == http.MethodPost {
            // 解析用户输入的时间和时区
            ti := &TimeInput{
                Time:     r.FormValue("time"),
                TimeZone: r.FormValue("timezone"),
            }

            // 加载时区信息
            loc, err := time.LoadLocation(ti.TimeZone)
            if err != nil {
                http.Error(w, fmt.Sprintf("Error loading time zone: %v", err), http.StatusInternalServerError)
                return
            }

            // 将输入的时间转换为 time.Time
            t, err := time.Parse("2006-01-02 15:04:05", ti.Time)
            if err != nil {
                http.Error(w, fmt.Sprintf("Error parsing time: %v", err), http.StatusInternalServerError)
                return
            }

            // 使用时区信息格式化时间
            layout, err := time.LoadLayoutIn(language.English, region.CN, "Monday, January 2, 2006")
            if err != nil {
                http.Error(w, fmt.Sprintf("Error loading layout: %v", err), http.StatusInternalServerError)
                return
            }
            formattedTime := t.In(loc).Format(layout)

            // Using the template engine, assign the formatted time to the "FormattedTime" field and render it
            ti.FormattedTime = formattedTime
            if err := tmpl.Execute(w, ti); err != nil {
                http.Error(w, "Error rendering template", http.StatusInternalServerError)
            }
        }
    })

    // 启动 HTTP 服务器
    http.ListenAndServe(":8080", nil)
}
로그인 후 복사

위 내용은 Golang에서 시간대를 기준으로 시간 형식을 지정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿