golang一些日期区间函数

EasyNetCN · · 888 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

import (
    "math"
    "time"
)

func GetFirstDateOfMonth(d time.Time) time.Time {
    d = d.AddDate(0, 0, -d.Day()+1)

    return GetZeroTime(d)
}

func GetLastDateOfMonth(d time.Time) time.Time {
    return GetFirstDateOfMonth(d).AddDate(0, 1, -1)
}

func GetZeroTime(d time.Time) time.Time {
    return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
}

func GetFirstDateOfWeek(d time.Time) time.Time {
    offset := int(time.Monday - d.Weekday())

    if offset > 0 {
        offset = -6
    }

    return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location()).AddDate(0, 0, offset)
}

func GetLastDateOfWeek(d time.Time) time.Time {
    offset := int(7 - d.Weekday())

    if offset > 6 {
        offset = 0
    }

    return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location()).AddDate(0, 0, offset)
}

func GetWeekOfYear(d time.Time) int {
    return int(math.Ceil(GetLastDateOfWeek(d).Sub(GetLastDateOfWeek(time.Date(d.Year(), 1, 1, 0, 0, 0, 0, d.Location()))).Hours()/(24*7))) + 1
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:EasyNetCN

查看原文:golang一些日期区间函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

888 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传