Goland 时间转换的那些事

在项目的开发过程中遇到的一个很有意思的时间转换问题

例子

假设有一个需求,是从数据库获取到了一个时间,然后需要把时间延后一天,再返回时间戳

得到伪代码

t := "2022-03-08 23:59:59"
expireTime, _ := time.Parse("2006-01-02 15:04:05", t)
expireTime = expireTime.Add(time.Hour * 24)
fmt.Println(expireTime.Unix()) //输出
1646870399

用时间转换的在线网站对1646870399 进行转换得到

2022-03-10 07:59:59

这于我们理想中的2022-03-09 23:59:59有很大差距

那么问题出现在哪里呢?我们看看time.Parse()这个方法的说明In the absence of a time zone indicator, Parse returns a time in UTC.

就可以知道:在没有时区指示符的情况下,Parse返回UTC时间。

所以得到的打印结果会与理想中有差距

正确的方法

1. 换成time.ParseInLocation来指定时区

t := "2022-03-08 23:59:59"
expireTime, _ := time.ParseInLocation("2006-01-02 15:04:05", t, time.Local)
expireTime = expireTime.Add(time.Hour * 24)
fmt.Println(expireTime.Unix()) //输出
1646841599
//转换后,与理想中的答案一样
2022-03-09 23:59:59

2. 在转换成时间戳的时候指定时区

t := "2022-03-08 23:59:59"
expireTime, _ := time.ParseInLocation("2006-01-02 15:04:05", t, time.Local)
expireTime = expireTime.Add(time.Hour * 24)
fmt.Println(expireTime.Local().Unix()) //输出
1646841599
//转换后,与理想中的答案一样
2022-03-09 23:59:59

最新文章

  1. NSString属性什么时候用copy,什么时候用strong?
  2. 用户引导页--- ScrollView的使用
  3. Spring 依赖注入方式详解
  4. 史上最全的Linux常用命令
  5. Spring In Action ③
  6. 【07_226】Invert Binary Tree
  7. POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
  8. SQL Server 2008 R2——VC++ ADO 操作 重复利用_CommandPtr
  9. URAL 1654 Cipher Message 解题报告
  10. AJAX中UPDATEPANEL配合TIMER控件实现局部无刷新
  11. Listview的闪烁问题
  12. PHP利用socket_bind函数切换IP地址采集数据
  13. 亲测 asp.net 调用 webservice返回json
  14. hdoj 1237 简单计算器
  15. 15个顶级Java多线程面试题及回答
  16. python 入门快速学习整理
  17. 用CentOS,fedora等访问局域网中的Windows共享
  18. JavaScript:有符号整数与无符号整数相互转化
  19. 浅谈CSS3 box-sizing 属性 有趣的盒模型
  20. 数据量你造吗-JAVA分页

热门文章

  1. java基础-抽象类与接口(转)
  2. 彻底搞清楚class常量池、运行时常量池、字符串常量池
  3. 【NetCore】依赖注入的一些理解与分享
  4. API 接口的安全设计验证:ticket,签名,时间戳
  5. 分享刚出炉的基于Blazor技术的Web应用开发框架
  6. 基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡
  7. Solution -「多校联训」排水系统
  8. Solution -「CF 156D」Clues
  9. Note -「矩阵树定理」学习笔记
  10. Solution -「CF 802C」Heidi and Library (hard)