go - 如何在当前时间添加或减去 UTC 偏移值

标签 go time offset utc

如何在 GoLang 中添加或减去我当前时间的 UTC 偏移量(另一个时间位置)值。我试过这个链接但没有用(example)

例子

  1. 我的输入是“UTC+7”。我不知道位置。现在我在印度。
  2. 现在我得到印度 (IST) 时间。例如:2019-07-23T15:23:08,这里我需要在IST中添加UTC+7。这可能吗?

最佳答案

使用time.LoadLocation() 获取特定时区的位置信息。然后使用时间对象的.In()方法,将当前时间转换成期望的时区。

例子:

now := time.Now()
fmt.Println("My place", now)
// 2019-07-23 18:14:23.6036439 +0700 +07

locSingapore, _ := time.LoadLocation("Asia/Singapore")
nowInSingapore := now.In(locSingapore)
fmt.Println("Singapore", nowInSingapore)
// 2019-07-23 19:14:23.6036439 +0800

locLondon, _ := time.LoadLocation("Europe/London")
nowInLondon := now.In(locLondon)
fmt.Println("London", nowInLondon)
// 2019-07-23 12:14:23.6036439 +0100 BST

解释:

  • 从上面的代码我们可以看到time.Now()时区是+7,这是因为我住在印度尼西亚西部。
  • 但是 nowInSingapore 时区是 +8,这是因为 now 对象被调整到新加坡时区。
  • 最后一个,nowInLondon 显示了另一个不同的时区,+1

如果我们比较所有这些时间,它基本上是同一时间。

18:14:23 WIB (GMT +7) == 19:14:23 GMT +8 == 12:14:23 BST (GMT +1)

关于go - 如何在当前时间添加或减去 UTC 偏移值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57162166/

相关文章:

go - 等待完成后我们是否需要创建新的 WaitGroup ?

ubuntu - 我试图杀死特定进程ID上的golang脚本但是当我杀死它时它说终止但仍在运行

c++ - timeval 到字符串(在两者之间转换)

android - offsetLeftAndRight() 究竟做了什么?

c++ - 添加基址+偏移量修改值

javascript - div 的位置/偏移量返回为 0

sql - 是否可以在执行查询时传入参数数组而不是单独传递每个参数?

go - http.Client POST 在发送正文之前读取响应

java - 为什么使用带有 YYYY 模式的 DateTimeFormatter 格式化日期会给出错误的年份?

Android java.util.concurrent.TimeUnit 将毫秒转换为分钟