golang根据配置的时间和时区计算定时任务是否到了刷新时间

本文介绍了如何使用Golang根据配置的当地时间与时区判断是否到达定时任务的执行时刻。通过示例解释了如何处理不同时区的20点,并展示了相关代码实现,但未涉及夏令时的计算问题。
摘要由CSDN通过智能技术生成

起因

  很多时候我们会碰到这样的需求,每天某个时候需要定时执行某个任务,比如定时发邮件、定时发推送消息等,而这个定时是针对当地时间的,比如每天中午12点发推送消息给玩家提醒可以上线领金币啦。
  然而,中国的12点和越南的12点就不是同一个12点,所以需要通过时区计算是否到了该执行任务的时候。

思路

  先来看一下如何根据时区计算约定的时间。假设现在需要晚上20点,执行任务,时区为西3时区。首先生成一个格林威治时间的20点

utcTime := time.Now().UTC()
targetTime :=time.Date(utcTime.Year(),utcTime.Month(),utcTime.Day(),
20, 0, 0, 0, utcTime.Location())

  由于西3时区比格林威治时间慢3个小时,等西3时区20点的时候,格林威治时间就是20点再过3小时,对应的格林威治时间就是

targetTime.Unix() + 3 * 3600

而如果是东8时区到20点的时候,格林威治时间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值