Golang中的各种时间操作
Golang中的各种时间操作
需求
时间格式的转换比较麻烦,自己写了个工具,可以通过工具中的这些方法相互调用转成自己想要的格式,代码如下,后续有新的函数再添加
实现代码
package utils
import "time"
const (
TIMEFORMAT = "20060102150405"
NORMALTIMEFORMAT = "2006-01-02 15:04:05"
)
// 当前时间
func GetTime() time.Time{
return time.Now()
}
// 格式化为:20060102150405
func GetTimeString(t time.Time) string {
return t.Format(TIMEFORMAT)
}
// 格式化为:2006-01-02 15:04:05
func GetNormalTimeString(t time.Time) string {
return t.Format(NORMALTIMEFORMAT)
}
// 转为时间戳->秒数
func GetTimeUnix(t time.Time) int64 {
return t.Unix()
}
// 转为时间戳->毫秒数
func GetTimeMills(t time.Time) int64 {
return t.UnixNano() / 1e6
}
// 时间戳转时间
func GetTimeByInt(t1 int64) time.Time{
return time.Unix(t1,0)
}
// 字符串转时间
func GetTimeByString(timestring string) (time.Time,error){
if timestring == "" {
return time.Time{},nil
}
return time.ParseInLocation(TIMEFORMAT, timestring, time.Local)
}
// 标准字符串转时间
func GetTimeByNormalString(timestring string) (time.Time,error){
if timestring == "" {
return time.Time{},nil
}
return time.ParseInLocation(NORMALTIMEFORMAT, timestring, time.Local)
}
// 比较两个时间大小
func CompareTime(t1 ,t2 time.Time) bool {
return t1.Before(t2)
}
// n小时后的时间字符串
func GetNextHourTime(s string, n int64) string {
t2, _ := time.ParseInLocation(TIMEFORMAT, s, time.Local)
t1 := t2.Add(time.Hour * time.Duration(n))
return GetTimeString(t1)
}
// 计算俩个时间差多少小时
func GetHourDiffer(start_time, end_time string) float32 {
var hour float32
t1, err := time.ParseInLocation(TIMEFORMAT, start_time, time.Local)
t2, err := time.ParseInLocation(TIMEFORMAT, end_time, time.Local)
if err == nil && CompareTime(t1,t2) {
diff := GetTimeUnix(t2) - GetTimeUnix(t1)
hour = float32(diff) / 3600
return hour
}
return hour
}
// 判断当前时间是否是整点
func Checkhours() bool {
_, m, s := GetTime().Clock()
if m == s && m == 0 && s == 0 {
return true
}
return false
}
// 时间字符串转为标准字符串
func StringToNormalString(t string) string {
if !(len(TIMEFORMAT) == len(t) || len(SHORTTIMESTRING) == len(t)) {
return t
}
if len(SHORTTIMESTRING) == len(t) {
t += "000000"
}
if len(TIMEFORMAT) == len(t) {
t1,err:= GetTimeByString(t)
if err != nil {
return t
}
t = GetTimeString(t1)
}
return t
}
Golang中的各种时间操作的更多相关文章
- JS 中的日期时间操作计算实例
实例 一:已知日期格式为 "YYYY/MM/DD",计算相对于今天的天数差. function fromNow(date){ var mTimes = new Date(date) ...
- java中常用的时间操作
最近项目设计时间的转换和计算,长时间没用时间操作了,感觉手有点生,所以在这里记录一下: Date 常用的方法: getTime() .setTime(): SimpleDateFormate 常用的方 ...
- python中常用的时间操作
python中常用的时间模块有time和datetime,以下是这两个模块中常用的方法: #先引入模块 import timefrom datetime import datetiem, timezo ...
- kbmmw 中的日期时间操作
为了精确度反映时间及时区,kbmmw 里面专门有一个单元处理日期时间,由于很多同学习惯了delphi 自带的Tdatetime,使用这个时会有一些疑惑,因此今天就单独说一下这个. 首先kbmmwdat ...
- golang中的 time 常用操作
时间戳 时间戳 (例如: 1554714009) time.now().Unix() 格式时间 (例如: 2019-04-08 17:00:09) time.Now().Format("20 ...
- golang中使用mongodb的操作类以及如何封装
mgo简介 mongodb官方没有关于go的mongodb的驱动,因此只能使用第三方驱动,mgo就是使用最多的一种. mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API ...
- ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(上)
前言 在上篇文章中,详细分析了RACSignal是创建和订阅的详细过程.看到底层源码实现后,就能发现,ReactiveCocoa这个FRP的库,实现响应式(RP)是用Block闭包来实现的,而并不是用 ...
- Golang 中操作 Mongo Update 的方法
Golang 和 MongoDB 中的 ISODate 时间交互问题 2018年02月27日 11:28:43 独一无二的小个性 阅读数:357 标签: GolangMongoDB时间交互时间转换 更 ...
- Golang中如何正确的使用sarama包操作Kafka?
Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ...
随机推荐
- Spark大数据处理框架入门(单机版)
导读 引言 环境准备 安装步骤 1.下载地址 2.开始下载 3.解压spark 4.配置环境变量 5.配置 spark-env.sh 6.启动spark服务 7.测试spark stay hungry ...
- ubuntu下载安装软件并创建图标
本列以安装webstorm软件 1.官网下载软件的压缩包 2.解压 umlinux@umlinux-PC:~/idea$ tar -zxvf ideaIU-2020.3.1.tar.gz 3.找到we ...
- 如何用WINPE备份电脑系统;电脑备份 听语音
如何用WINPE备份电脑系统:电脑备份 听语音 原创 | 浏览:1046 | 更新:2017-09-30 15:09 1 2 3 4 5 6 7 分步阅读 备份系统已经成为一种常态,我们在安装完成系统 ...
- 强哥MySQL学习笔记
数据库服务器:1.数据库2.数据表 数据表:1.表结构(字段)2.表数据(记录)3.表索引(加快检索) 表引擎:1.myisam2.innodb 查看表字段desc table;删除数据库:drop ...
- 040.Python进程和Join
一 进程相关介绍 1.1 进程的概念(process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位 资源分配:分配的是cpu和内存等物理资源 进程号是程的唯标识 同-个程序执行两次之 ...
- 035.Python正则表达式
正则表达式 一 介绍 拼正则表达式是什么? 它是约束字符串匹配某种形式的规则 正则表达式有什么用? 检测某个字符串是否符合规则比如:判断手机号,身份证号是否合法 提取网页字符串中想要的数据.比如:爬虫 ...
- Python对比两个txt文件内容
difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式.#!coding=utf-8 # 2018-9-19 import sys i ...
- 痞子衡嵌入式:快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的 ...
- 安装篇--xshell评估过期解决方法
打开XSHELL6(以自身版本为准,没有版本限制),弹出如上提示框,解决如下: 1.点击取消,不用卸载原来的,直接进入官网下载安装免费授权的https://www.netsarang.com/ 2.点 ...
- maven项目多环境打包问题
1.xxx-api是基于springboot的模块 2.配置文件 application.properties spring.profiles.active=@activeEnv@ applicati ...