golang时间-时间戳的获取-转换-计算

2023-10-27

一、获取时间

1.1 获取当前时间

代码实现

package main

import (
        "fmt"
        "time"
)

func main() {
   currentTime := time.Now()                  //当前时间
   currentYear := time.Now().Year()        //当前年
   currentMonth := time.Now().Month()       //当前月
   currentDay := time.Now().Day()         //当前日
   currentHour := time.Now().Hour()        //当前小时小时
   currentMinute := time.Now().Minute()      //当前分钟
   currentSecond := time.Now().Second()      //当前秒
   currentNSecond := time.Now().Nanosecond()  //当前纳秒
   
   //打印结果
   fmt.Println("当前时间是:", currentTime)
   fmt.Println("当前年:", currentYear)
   fmt.Println("当前月:", currentMonth)
   fmt.Println("当前日:", currentDay)
   fmt.Println("当前小时:", currentHour)
   fmt.Println("当前分钟:", currentMinute)
   fmt.Println("当前秒:", currentSecond)
   fmt.Println("当前纳秒:", currentNSecond)
}

结果输出

当前时间是: 2022-04-22 16:42:44.1160954 +0800 CST m=+0.004795301
当前年: 2022
当前月: April
当前日: 22
当前小时: 16
当前分钟: 42
当前秒: 44
当前纳秒: 150022700

1.2 获取之前/之后的时间

  • 获取1分钟之前的时间戳
package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	m, _ := time.ParseDuration("-1m")
	result := currentTime.Add(m)
	fmt.Println(result)
}

说明

  • time.ParseDuration 将传入的"-1m"转换为“持续时间”类型(time.Duration),输出为-0h1m0s
  • 之后Add() 可对其和时间进行计算

结果输出

2022-04-22 16:43:20.9844622 +0800 CST m=-59.994691699
  • 获取一小时之前的时间

方法同上,持续时间可如下转换:time.ParseDuration(“-1h”)

package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	m, _ := time.ParseDuration("-1h")
	result := currentTime.Add(m)
	fmt.Println(result)
}

结果输出

2022-04-22 15:47:01.9977133 +0800 CST m=-3599.992986699
  • 获取1小时后的时间

方法同上,持续时间可如下转换:ime.ParseDuration(“1h”)

package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	m, _ := time.ParseDuration("1h")
	result := currentTime.Add(m)
	fmt.Println(result)
}

结果输出

2022-04-22 17:50:58.3395738 +0800 CST m=+3600.004424801

二、获时间戳

2.1 获取当前时间戳

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix())
	fmt.Printf("时间戳(纳秒):%v;\n",time.Now().UnixNano())
	fmt.Printf("时间戳(毫秒):%v;\n",time.Now().UnixNano() / 1e6)
	fmt.Printf("时间戳(纳秒转换为秒):%v;\n",time.Now().UnixNano() / 1e9)
}

输出结果

时间戳(秒):1650617834;
时间戳(纳秒):1650617834110539400;
时间戳(毫秒):1650617834110;
时间戳(纳秒转换为秒):1650617834;

2.2 时间转时间戳

  • 代码实现
package main

import (
	"fmt"
	"time"
)

func main() {
	timeStamp := time.Date(2022, 5, 20, 13, 14, 0, 0, time.Local).Unix()
	fmt.Println("时间转时间戳:",timeStamp)
}

结果输出

时间转时间戳: 1653023640
  • 示例:获取当天01:00:00的时间戳
package main

import (
	"fmt"
	"time"
)


func main() {
	currentYear := time.Now().Year()
	currentMonth := time.Now().Month()
	currentDay := time.Now().Day()
	timeStamp := time.Date(currentYear, currentMonth, currentDay, 1, 0, 0, 0, time.Local).Unix()
	fmt.Println("当天某个时间点的时间戳:",timeStamp)
}

结果输出

当天某个时间点的时间戳: 1650560400

2.2 时间戳转时间

  • 基本使用
package main

import (
	"fmt"
	"time"
)

func main() {
	timeStr := time.Unix(1650617834, 0)
	fmt.Println(timeStr)
}

结果输出

2022-04-22 16:57:14 +0800 CST
  • 按模板格式化输出

注意:模板格式里的时间不能随意更改

package main

import (
	"fmt"
	"time"
)

func main() {
	timeLayout := "2006-01-02 15:04:05"
	timeStr := time.Unix(1653023640, 0).Format(timeLayout)
	fmt.Println(timeStr)
}

结果输出

2022-05-20 13:14:00
  • 模板输出当前时间

同上例,只是将当前时间戳转换成了时间字串输出

package main

import (
	"fmt"
	"time"
)

func main() {
	timeStamp := time.Now().Unix()
	timeLayout := "2006-01-02 15:04:05"
	timeStr := time.Unix(timeStamp, 0).Format(timeLayout)
	fmt.Println(timeStr)

}

结果输出

2022-04-22 17:21:31

3. 时间计算

3.1 时间加时间段

  • 方法
 currentTime := time.Now()
 m, _ := time.ParseDuration("-1m")
 result := currentTime.Add(m)

示例

package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	m, _ := time.ParseDuration("-1m")
	result := currentTime.Add(m)
	fmt.Println(result)
}

结果输出

2022-04-22 17:23:04.2727584 +0800 CST m=-59.995884099

3.2 计算两时间之差

  • 语法

timeOne - timeTwo的方法如下:

timeOne.Sub(timeTwo)
  • 示例
package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	//创建时间1
	timeDuOne, _ := time.ParseDuration("-1h")
	timeOne := currentTime.Add(timeDuOne)
	fmt.Println("时间1:",timeOne)
	//创建时间2
	timeDuTwo, _ := time.ParseDuration("1h")
	timeTwo := currentTime.Add(timeDuTwo)
	fmt.Println("时间2:",timeTwo)
	//计算两时间
	dTime := timeOne.Sub(timeTwo)
	fmt.Println("两时间的差是", dTime)

	m := timeOne.Sub(timeTwo)
	fmt.Println("差值按分钟计:", m.Minutes())

	h := timeOne.Sub(timeTwo)
	fmt.Println("差值按小时计:", h.Hours())

	d := timeOne.Sub(timeTwo)
	fmt.Println("差值按天计算:", d.Hours()/24)
}
  • 结果输出
时间1: 2022-04-22 16:28:04.525285 +0800 CST m=-3599.994894399
时间2: 2022-04-22 18:28:04.525285 +0800 CST m=+3600.005105601
两时间的差是 -2h0m0s
差值按分钟计: -120
差值按小时计: -2
差值按天计算: -0.08333333333333333
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang时间-时间戳的获取-转换-计算 的相关文章

  • linux-vsprintf.c

    linux kernel vsprintf c 对参数产生格式化的输出 C 1991 Linus Torvalds vsprintf c Lars Wirzenius Linus Torvalds Wirzenius wrote this

随机推荐

  • Java一个属性依赖于另外一个属性的值

    一个java类中的一个属性最开始需要从另外一个属性的值得到 现在举例如下 最简单的例子 判断是否成功 Data ApiModel description 返回结果集 public class ReturnResult
  • 人工神经网络的基本模型,神经网络解剖学模型图

    神经网络是什么 神经网络可以指向两种 一个是生物神经网络 一个是人工神经网络 生物神经网络 一般指生物的大脑神经元 细胞 触点等组成的网络 用于产生生物的意识 帮助生物进行思考和行动 人工神经网络 Artificial Neural Net
  • plsql显示不出来服务器,求救:PLSQL调用webservice服务器端获取不到值

    我使用的是UTL DBWS包去调用webservice 现在我测试可以通过调用 但是发现服务器端获取不到值我贴下我的代码 create or replace procedure pro trig test is service utl db
  • 5-Java 泛型

    5 泛型 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 5 1 泛型方法 在调用时可以接收不同类型的参数 每一个类型参数声明部分包含一个或多个类型参数 参数间用逗号隔开 类型参数能被用来声明返回值类型 泛型方法体的声明和
  • 50个java编程程序之四

    程序 31 题目 将一个数组逆序输出 import java util public class lianxi31 public static void main String args Scanner s new Scanner Syst
  • python对字符串进行加密_python学习:实现将字符串进行加密

    题目描述 1 对输入的字符串进行加解密 并输出 2加密方法为 当内容是英文字母时则用该英文字母的后一个字母替换 同时字母变换大小写 如字母a时则替换为B 字母Z时则替换为a 当内容是数字时则把该数字加1 如0替换1 1替换2 9替换0 其他
  • UE4 图表插件使用文档

    UE4图表插件使用文档 插件概述 插件获取 插件演示 插件配置 插件使用 创建图表控件 控件调节属性 备注 插件概述 SCUI插件是一套UnrealEngine的UMG图表插件 初衷是为了快速制作智慧城市项目 解决复杂数据展示的难点 简化数
  • 蓝色版去水印小程序源码+接口

    介绍 蓝色版小程序源码 接口 网盘下载地址 http kekewangLuo net edaLtfZJUE40 图片
  • C++在线五子棋对战(网页版)项目:websocket协议

    目标 认识理解websocket协议 websocket切换过程和websocket协议格式 认识和学会使用websocketpp库常用接口 了解websocketpp库搭建服务器流程 认识和学会使用websocketpp库bin接口 最后
  • HTML标签marquee实现文字,图片等滚动效果

    HTML标签marquee实现文字 图片等滚动效果 页面的自动滚动效果 可由javascript来实现 也可以由一个html标签 就可以实现多种滚动效果 无需js控制 使用marquee标记不仅可以移动文字 也可以移动图片 表格等 语法 说
  • maven集成tomcat插件以及乱码解决

    Maven已经是Java的项目管理标配 如何在JavaEE开发使用Maven调用Web应用 是很多同学关心的问题 本文将介绍 Maven如何介绍Tomcat插件 Maven Tomcat插件现在主要有两个版本 tomcat maven pl
  • csdn博客推荐系统实战-5文本聚类-话题模型LDA

    话题模型topic model是自然语言处理领域里面热门的一个技术 可以用来做很多的事情 例如相似度比较 关键词提取 分类 还有就是具体产品业务上的事了 总之可以干很多的事情 今天不会讲LDA模型的很多细节和原理 没有满屏的数学公式 只讲一
  • OpenGL光源位置

    一 OpenGL光源简介 OpenGL提供了多种形式的光源 如点光源 平行光源和聚光灯光源等 所有光源都使用 glLight 接口来设置光源属性 其中包括 glLight if 和 glLight if v 两类 1 示例光源 GLfloa
  • 下载好unity后打开出现这个弹窗怎么解决

    unity我重新下了两遍 始终出现这个弹窗 无法打开unity 始终找不到许可 急求 谢谢
  • Matlab 中三角函数

    Matlab 中三角函数 atan2 基本数学函数 abs 绝对值 acos 反余弦 acosh 反双曲余弦函数 acot 反余切 acoth 反双曲线余切 acsc 反余割 acsch 反双曲线余割 angle 相位角 asec 反正割
  • Materials Studio工具模块介绍

    相关教程和破解版软件包下载链接为 https blog csdn net qwxwaty article details 80402505 各模块细节介绍 Materials Visualizer Materials visualizer
  • 总结ctf中 MD5 绕过的一些思路

    总结ctf中 MD5 绕过的一些思路 1 常规的0e绕过 2 数组绕过 3 强类型绕过 4 a md5 a 5 md5 与SQL注入 a b md5 a md5 b sha1 a sha1 b 1 常规的0e绕过 QNKCDZO 24061
  • mapbox 在 vue2 中的使用

    一 Mapbox 在 vue 中的使用 安装 mapbox mapbox gl geocoder npm install save mapbox mapbox gl geocoder 安装 mapbox mapbox gl language
  • (三)原生JavaScript----Ajax的Get请求和Post请求

    三 原生JavaScript使用Ajax的步骤 Router js中有get post接口 一 定义一个ajax函数 const ajax function 二 获取节点值 Ajax函数中 let username document get
  • golang时间-时间戳的获取-转换-计算

    一 获取时间 1 1 获取当前时间 代码实现 package main import fmt time func main currentTime time Now 当前时间 currentYear time Now Year 当前年 cu