Как найти день недели по заданной дате в строке? - PullRequest
0 голосов
/ 14 января 2019

В моем приложении есть функция, которая сохраняет дату в виде строки в базе данных, но не может сохранить день в эту дату. Я попробовал короткий код по этому вопросу. Предположим, у нас есть дата в строке.

Код:

package main

import (
    "fmt"
    "strconv"
    "strings"
    "time"
)   

func main() {
    p := fmt.Println
    date := "01-25-2019"
    arrayDate := strings.Split(date, "-")
    fmt.Println(arrayDate)
    month, _ := strconv.Atoi(arrayDate[0])
    dateInt, _ := strconv.Atoi(arrayDate[1])
    year, _ := strconv.Atoi(arrayDate[2])
    then := time.Date(
        year, time.Month(month), dateInt, 0, 0, 0, 0, time.UTC)
    p(then)

    p(then.Weekday())

}

Есть ли более эффективный способ сделать это?

детская площадка ссылка

1 Ответ

0 голосов
/ 14 января 2019

Да, просто проанализируйте время, используя time.Parse(), например,

date := "01-25-2019"
t, err := time.Parse("01-02-2006", date)
if err != nil {
    panic(err)
}
fmt.Println(t.Weekday())

time.Parse() выполнит синтаксический анализ, который вы пытались реализовать вручную. Обратите внимание, что первый параметр time.Parse() представляет собой строку макета, она должна содержать отсчета времени (который является Mon Jan 2 15:04:05 -0700 MST 2006) в формате ваш вклад дается.

Вывод (попробуйте на Go Playground ):

Friday
...