go语言的时间格式

2023-05-16

该文可以快速在Go语言中获得时间的计算。

在Go中获取时间

如何获取当前时间

now := time.Now()
fmt.Printf("current time is :%s", now)

current time is :2009-11-10 23:00:00 +0000 UTC m=+0.000000001

如何获取UNIX Timestamp

cur_time := time.Now().Unix()
fmt.Printf("current unix timestamp is :%v\n", cur_time )

如何获取当日0:00:00 0:00:00

now := time.Now()
date := time.Date(now.Year(), now.Month(), now.Day(),0, 0, 0, 0, time.Local)
fmt.Printf("date is :%s", date)

date is :2021-04-13 00:00:00 +0800 

如何获取时区时间

标准时间 time.Now().UTC()
本地时区 time.Now().Local()


 // 获取0时区时间
fmt.Printf("date is :%s\n", time.Now().UTC())

date is :2021-04-13 16:02:33.853254 +0000 UTC

// 快速设置时区
timeLocation, _ := time.LoadLocation("Asia/Tokyo") //使用时区码
fmt.Println(time.Now().In(timeLocation).String()) // 快速设置时区

2021-04-14 01:09:18.140997 +0900 JST

Go中的固定时间格式

获取月份

time.April

type Month int

const (
	January Month = 1 + iota
	February
	March
	April
	May
	June
	July
	August
	September
	October
	November
	December
)

获取星期

time.Sunday


type Weekday int

const (
	Sunday Weekday = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
)

Go中的时间格式化

Go中时间格式化的格式为 2006-01-02 15:04:05 612345为格式,而不是具体时间

    
    // YYYY-MM-DD
    fmt.Println(time.Now().Format("2006-01-02"))
 
    //  YYYY-MM-DD hh:mm:ss
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    
    //  M-DD
    fmt.Println(time.Now().Format("1-02"))

    //  MM-DD
    fmt.Println(time.Now().Format("01-02")
   
    // 获取当前的小时、分钟、秒(整数)
    nowHour, nowMinute, nowSecond = time.Now().Clock()

    // 获取前一天
    //  AddDate(Years, months, days)
    yesterday = time.Now().AddDate(0,0,-1).Format("01/02")

    // 显示星期英文简写
    fmt.Println(time.Now().Format("2006-01-02 15:04:05 Mon"))
 
    // 星期的大写
    fmt.Println(time.Now().Format("2006-01-02 15:04:05 Monday"))
 
    // 增加微秒
    fmt.Println(time.Now().Format("2006-01-02 15:04:05.000000"))
 
    // 纳秒
    fmt.Println(time.Now().Format("2006-01-02 15:04:05.000000000"))
}

// print result
08-10-2018
08-10-2018 21:11:58
08-10-2018 21:11:58 Fri
08-10-2018 21:11:58 Friday
08-10-2018 21:11:58.880934
08-10-2018 21:11:58.880934320

Go中的时间计算

如何获取本周日期有哪些?

获取一个星期的第一天是几号

t:=time.Now()
fmt.Println(t.Weekday()) // 获取现在时间为本周的星期几

得到本日为星期几后,可以对时间进行计算,因为time包内星期的常量都为int,可以直接进行算数运算.
用一周的第一天减去当日为星期几,如果为0既『本日为本周的第一天』

time.AddDate(year, month, date),仅可以添加年月日
time.Add(Hours, Minutes, Seconds),仅可以添加时分秒

offset := int(time.Monday - t.Weekday()) //=-1

如不为0,time包提供了,「以当前时间为基点,进行加减运算」

// t.AddDate(year, month, date)
t.AddDate(0,0,offset) // 可以获取到,周一为几月几日

综上所属,可以获得每周第一天为几月几日,每周随后一天为几月几日


/**
  *     获取上周周第一天具体年月日
**/

func GetLastWeekFirstDate() (weekMonday string) {
	thisWeekMonday := GetFirstDateOfWeek()
	TimeMonday, _ := time.Parse("2006-01-02", thisWeekMonday)
	lastWeekMonday := TimeMonday.AddDate(0, 0, -7)
	weekMonday = lastWeekMonday.Format("2006-01-02")
	return
}


/**
  *     获取本周的周一具体年月日
**/

func GetFirstDateOfWeek() (weekMonday string) {
	now := time.Now()
	offset := int(time.Monday - now.Weekday())
	if offset > 0 {
		offset = -6
	}

	weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
	weekMonday = weekStartDate.Format("2006-01-02")
	return
}

/**
  *     获取上周最后一天具体年月日
**/

func GetLastWeekLastDate() (weekMonday string) {
	now := time.Now()

	offset := int(time.Monday - now.Weekday())
	if offset > 0 {
		offset = -6
	}

	weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
	weekMonday = weekStartDate.AddDate(0, 0, -1).Format("2006-01-02")
	return
}

/**
  *     获取上周一星期所有天数的具体年月日
**/

func GetBetweenDates(sdate, edate string) []string {
	d := []string{}
	timeFormatTpl := "2006-01-02 15:04:05"
	if len(timeFormatTpl) != len(sdate) {
		timeFormatTpl = timeFormatTpl[0:len(sdate)]
	}
	date, err := time.Parse(timeFormatTpl, sdate)
	if err != nil {
		return d
	}
	date2, err := time.Parse(timeFormatTpl, edate)
	if err != nil {
		return d
	}
	if date2.Before(date) {
		return d
	}
	// 输出日期格式固定
	timeFormatTpl = "2006-01-02"
	date2Str := date2.Format(timeFormatTpl)
	d = append(d, date.Format(timeFormatTpl))
	for {
		date = date.AddDate(0, 0, 1)
		dateStr := date.Format(timeFormatTpl)
		d = append(d, dateStr)
		if dateStr == date2Str {
			break
		}
	}
	return d
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go语言的时间格式 的相关文章

  • 解决:使用 Vue 3 Script Setup 时 ESLint 报错 ‘defineProps‘ is not defined

    解决 xff1a 使用 Vue 3 Script Setup 时 ESLint 报错 defineProps is not defined Vue 3 的 Script Setup 语法引入了 defineProps defineEmits
  • Wek6 A - Tree diameter

    问题描述 xff1a 实验室里原先有一台电脑 编号为1 xff0c 最近氪金带师咕咕东又为实验室购置了N 1台电脑 xff0c 编号为2到N 每台电脑都用网线连接到一台先前安装的电脑上 但是咕咕东担心网速太慢 xff0c 他希望知道第i台电
  • CSCSWek12 B-Happy 消消乐

    题目描述 Q老师是个很老实的老师 xff0c 最近在积极准备考研 Q老师平时只喜欢用Linux系统 xff0c 所以Q老师的电脑上没什么娱乐的游戏 xff0c 所以Q老师平时除了玩Linux上的赛车游戏SuperTuxKart之外 xff0
  • ubuntu中各个文件夹的作用

    Ubuntu的根目录的文件夹各个含义 home xff1a 家目录 xff0c 所有普通用户都有一个以自己名字命名的文件夹存放在这个目录中 普通用户登录ubuntu默认进入的就是家目录中自己的文件夹 xff0c 可用pwd命令查看 xff0
  • 【CUDA】Ubuntu系统如何安装CUDA保姆级教程(2022年最新)

    本期目录 Linux安装CUDA Linux安装CUDA 输入以下命令 xff0c 查看 GPU 支持的最高 CUDA 版本 笔者这里显示的是 11 6 xff0c 这意味着 xff0c 安装的 CUDA 版本必须 lt 61 11 6 n
  • AVI视频格式分析-封装格式

    AVI视频封装格式分析 使用的工具RIFF块CHUNK块LIST块hdrl LISTavih CHUNKstrl LISTstrh CHUNKstrf CHUNK JUNK CHUNKmovi LISTidx1 CHUNK 使用的工具 el
  • 2014.10.10

    1 主要是制作了suse镜像 xff0c 但是还存在很多问题 xff0c 没有加上默认网关 xff0c 我很不开心 xff0c 根目录没有扩展 2 了解了下 boot from image 通过glance上传一个镜像 xff0c 然后通过
  • 2014.10.11

    我只想骂csdn xff01 截图直接粘过来居然不能直接显示出来 xff01 xff01 xff01 妈蛋 xff01 xff01 1 suse镜像制作完善 xff0c 根目录未扩展这是个大问题 xff0c 默认网关没加上 所谓的根目录扩展
  • 2014.10.12

    早晨8点就起了 xff0c 然后匆匆奔向wx xff0c 为了思念的人 xff0c 吃了个中午饭 xff0c 感觉还不错 xff0c 下午回来之后又去了wpj xff0c 胡扯一通 xff0c 而且发现现在家里人的注意力完全放在我的情感生活
  • vmware 下安装 red hat 9,dos 以及wmware tools

    1 安装vmware vmware 版本 7 11 282343 英文原版下载 xff1a http dl sh ctc 2 pchome net 03 lt VMware workstation full 7 1 1 282343 rar
  • 关于上财陈畅的俄罗斯方块的学习

    最近同学学习C xff0c 想做一个大练习 xff0c 于是选择了俄罗斯方块 xff0c 我 xff0c 计算机专业在校学生 xff0c 说实话理论还行 xff0c 实践动手能力很差 xff0c 同学让我先做 xff0c 然后给他讲讲怎样一
  • xrdp开源项目的代码分析

    最近我的博客将重新恢复更新 xff0c 从2012年3月份起 xff0c 我开始参与某公司的堡垒机项目的研发工作 xff0c 堡垒机又叫内控堡垒机 xff0c 运维审计系统 xff0c 相信不少人也听说过 xff0c 目前电信 xff0c
  • xrdp开源项目的代码分析-1

    首先要说明情况 xff0c 我分析的代码基于xrdp 2012 5 11日 xff0c 而不是最新的代码 xff0c 最新的代码稍有改动 xff0c 但是主体的思想没有变化 xrdp 2012 5 11日代码的下载地址 xff1a http
  • 穿山甲的投放小技巧(账户如何快速过冷启动期)

    1 300 xff08 出价 xff1a 目标成本的2 3倍出价 xff09 xff0c 看成本 2 600 xff08 出价 xff1a 300预算时的一半 xff09 xff0c 看成本 3 放到日满格预算 xff08 出价 xff1a
  • C++加入库dll

    加入头文件加入 include 34 MES inc MES2Interface h 34 pragma comment lib 34 MES lib MES2Interface lib 34 MES2Interface dll 复制到运行
  • 结构体的大小如何计算

    我们实际生活中 xff0c 保存的数据一般不会是同一种类型 xff0c 所以引入了结构体 而结构体的大小也不是成员类型大小的简单相加 需要考虑到系统在存储结构体变量时的地址对齐问题 由于存储变量地址对齐的问题 xff0c 结构体大小计算必须
  • flatpak安装的firefox视频播放卡顿的解决方案

    最近在debian系统中使用flatpak安装最新版的firefox后发现 xff0c firefox在播放视频时十分卡顿 xff0c 经过四处搜索 xff0c 终于找到了解决方案 How to use hardware accelerat
  • NodeBB 安装部署 Linux(阿里云 CentOS 6.3 Redis NodeJS)

    网上有很多 xff0c 写的都不完整 xff0c 我尽量给大家一个完整的 基于Linux 阿里云 CentOS 6 3 安装 NodeBB 论坛 1 先安装NodeJs 安装方式有多种 xff0c 有通过下载源代码编译的 xff0c 有下载
  • shell脚本使用字符串截取报Bad substitution错误的原因即解决方法

    shell脚本使用字符串截取报Bad substitution错误的原因即解决方法 绝大多是是因为解释器的问题 第一步 使用命令查看你指令那个解释器 span class token function ls span bin sh al 我

随机推荐