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

Goland 时间转换的那些事的更多相关文章

  1. [jquery]将当前时间转换成yyyymmdd格式

    如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate ...

  2. MySQL 日期、时间转换函数

    MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...

  3. java时间类型的转换/获取当前时间/将时间转换成String/将String转换成时间

    对于我的脑子,我已经服气了...写了N遍的东西,就是记不住...既然记不住那就记下来... 利用java获取当前的时间(String类型,年-月-日 时:分:秒) //我要获取当前的日期 Date d ...

  4. inner join ,left join ,right join 以及java时间转换

    1.inner join ,left join 与 right join (from 百度知道) 例表aaid adate1    a12    a23    a3表bbid  bdate1     ...

  5. Python基本时间转换

    时间转换 python中处理时间的时候,最常用的就是字符形式与时间戳之间的转换. 把最基本的转换在这里记下来 string -> timestamp import time import dat ...

  6. Date类型时间转换

    /* 时间转换start */ public static void main(String args[]) { Date nowTime = new Date(); System.out.print ...

  7. unix环境C编程之日期时间转换

    1.理清概念 1.1.日历时间:   含义:国际标准时间1970年1月1日00:00:00以来经过的秒数.   数据类型:time_t.实际上是long的别名. 1.2.tm结构时间:   含义:结构 ...

  8. php时间转换unix时间戳

    本文介绍了php编程中unix时间戳转换的小例子,有关php时间转换.php时间戳的实例代码,有需要的朋友参考下. 第一部分,php 时间转换unix 时间戳实现代码. 复制代码代码示例: <? ...

  9. Js 处理将时间转换 “年-月-日”

    将时间  \/Date(1432828800000+0800)\/"  转换成:“年-月-日” //时间转换function ChangeDateFormat(val) {    if (v ...

随机推荐

  1. JFrame 的层次结构 及 背景设置说明

    感谢原文:https://blog.csdn.net/qq_32006373/article/details/49659129 一.JFrame 的层次结构 我们通过两个图来说明一下 JFrame 的 ...

  2. JspSmartUpload 简略使用

    JspSmartUpload 简略中文API文档 链接:https://blog.csdn.net/weixin_43670802/article/details/105143830 PDF课件 链接 ...

  3. 用最笨的方法实现java控制台日历打印

    如果想用户自定义输入日期查询,可以通过Calendar的set方法和Scanner方法设置 Calendar类简单使用:https://blog.csdn.net/weixin_43670802/ar ...

  4. table 增加或删除一行

    转载请注明来源:https://www.cnblogs.com/hookjc/ <HTML><SCRIPT LANGUAGE="JScript">funct ...

  5. 用rewrite规则实现将所有到a域名的访问rewrite到b域名

    1.临时重定向 1.1使用redirect实现临时重定向 # cat /apps/nginx/conf/nginx.conf ...省略... server { listen 80; server_n ...

  6. MySQL5.7修改登录密码的几种方式

    1.更新mysql.user表 use mysql UPDATE user SET authentication_string = password('新密码') where user = 'root ...

  7. 帆软报表(finereport)控件背景色更改

    setTimeout(function() { $('.fr-trigger-btn-up').css({ "background-color": "#003399&qu ...

  8. Solution -「JOISC 2021」「LOJ #3495」聚会 2

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个结点的树.称点集 \(S\) 到结点 \(u\) 的会合距离为 \(\sum_{v\in S}\ope ...

  9. Solution -「NOI 模拟赛」出题人

    \(\mathcal{Description}\)   给定 \(\{a_n\}\),求一个 \(\{b_{n-1}\}\),使得 \(\forall x\in\{a_n\},\exists i,j\ ...

  10. .NET 7 预览版 1 发布

    宣布 .NET 7 预览版 1 Jeremy 2022 年 2 月 17 日 今天,我们很高兴地宣布 .NET 历史上的下一个里程碑.在庆祝社区和 20 年创新的同时,.NET 7 Preview 1 ...