Go--时间日期相关

1 获取当天零点的时间戳

//当天0点的时间戳
    //获取当前时间
    t := time.Now()
    nowTime := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
    //转换为时间戳格式
    timeSamp := nowTime.Unix()
    fmt.Println(timeSamp)

 

2 获取次日零点的时间戳

//次日0点的时间戳
    timeStr := time.Now().Format("2006-01-02")
    //fmt.Println(timeStr)
    //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation
    //t1, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local)
    t2, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
    //fmt.Println(t1.Unix() + 1)
    fmt.Println(t2.AddDate(0, 0, 1).Unix())

 

3 获取昨天零点的时间戳

//昨天0点的时间戳
    ts := time.Now().AddDate(0, 0, -1)
    yesterDaytime := time.Date(ts.Year(), ts.Month(), ts.Day(), 0, 0, 0, 0, ts.Location())
    yesterDayTimeSamp := yesterDaytime.Unix()
    fmt.Println(yesterDayTimeSamp)

 

4 获取当前时间

//获取当前时间(字符串格式)
    timeStr := time.Now().Format("2006-01-02 15:04:05")
    fmt.Println(timeStr)

//获取今天的日期
    timeStr := time.Now().Format("2006-01-02")
    fmt.Println(timeStr)

 

5 23:59:59的时间戳

当天:

    // 获取当前时间
    now := time.Now()

    // 将时间设置为23点59分59秒
    t := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location())

    // 将时间转换为时间戳
    timestamp := t.Unix()

昨天:

    // 获取当前时间
    now := time.Now()

    // 将时间减去一天
    yesterday := now.AddDate(0, 0, -1)

    // 将时间设置为23点59分59秒
    t := time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 23, 59, 59, 0, yesterday.Location())

    // 将时间转换为时间戳
    timestamp := t.Unix()

次日:

    // 获取当前时间
    now := time.Now()

    // 将时间加上一天
    tomorrow := now.AddDate(0, 0, 1)

    // 将时间设置为23点59分59秒
    t := time.Date(tomorrow.Year(), tomorrow.Month(), tomorrow.Day(), 23, 59, 59, 0, tomorrow.Location())

    // 将时间转换为时间戳
    timestamp := t.Unix()

 

6 判断输入的时间格式,并转换为时间戳

package main

import (
    "fmt"
    "regexp"
    "time"
)

// 判断输入的时间是否为日期格式
func isDateFormat(input string) bool {
    datePattern := `^\d{4}-\d{2}-\d{2}$` // 日期格式的正则表达式模式
    match, _ := regexp.MatchString(datePattern, input)
    return match
}

// 判断输入的时间是否为日期+时间格式
func isDateTimeFormat(input string) bool {
    dateTimePattern := `^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$` // 日期+时间格式的正则表达式模式
    match, _ := regexp.MatchString(dateTimePattern, input)
    return match
}

func main() {
    input := "2023-07-19 12:00:56" // 输入的时间字符串

    // 判断输入的时间是日期格式还是日期+时间格式
    isDateFormat := isDateFormat(input)
    isDateTimeFormat := isDateTimeFormat(input)

    if isDateFormat {
        // 如果是日期格式,转换为时间戳
        layout := "2006-01-02"                                    // 日期格式的格式
        t, err := time.ParseInLocation(layout, input, time.Local) ////使用Parse的话默认为UTC时区,需要使用本地时区,用ParseInLocation()
        if err != nil {
            fmt.Println("无法解析日期:", err)
            return
        }
        timestamp := t.Unix()
        fmt.Println("日期格式的时间戳:", timestamp)
    } else if isDateTimeFormat {
        // 如果是日期+时间格式,转换为时间戳
        layout := "2006-01-02 15:04:05" // 日期+时间格式的格式
        t, err := time.ParseInLocation(layout, input, time.Local)
        if err != nil {
            fmt.Println("无法解析日期+时间:", err)
            return
        }
        timestamp := t.Unix()
        fmt.Println("日期+时间格式的时间戳:", timestamp)
    } else {
        fmt.Println("输入的时间格式无效")
    }
}

 

posted @ 2023-04-04 16:38  心恩惠动  阅读(135)  评论(0编辑  收藏  举报