go - 我将如何在 golang 中减少完美的时间?
问题描述
我正在为自动预订费用做一个 cron 工作。管理员在预订完成 2 小时后设置自动收费,然后我在当前时间 2 小时前完成所有预订并自动收费。但最终出现的问题是,current_date= 10/10/2018 current_time= 1:00AM
and automatic_charge_hours= 2
(hours) 意味着它将获得在 current_time 和 current_date 之前 2 小时完成的所有预订。在 24 小时格式中,它将获取前一个日期的 23 小时(2018 年 9 月 10 日晚上 11:00)的所有预订。但在我的情况下,它会变成零以下是我的情况: -
package main
import (
"fmt"
"time"
"strings"
)
func main() {
timeZone, _ := time.LoadLocation("America/New_York")
currDate := time.Now().In(timeZone).Format("2006-01-02 00:00:00 -0000")
onlyDate := strings.Split(currDate, " ")
hours, _ := 1, 0
if hours-int(2) < 0 {
hours = 0
} else {
hours = hours - int(2)
}
fmt.Println(hours, onlyDate[0])
}
游乐场链接https://play.golang.org/p/w7LIoTp9xN0
我将如何改变它。请有任何建议。
解决方案
if hours-int(2) < 0 {
hours = 0
} else {
hours = hours - int(2)
}
当小时数为负数时,将小时数显式设置为零。
如果更改hours = 0
为hours = 24 + (hours-int(2))
它返回 23。
见https://play.golang.org/p/FyXIn5gjIXk
无论如何,您应该使用时间函数,而不是手动操作小时。
更新:使用时间函数:
package main
import (
"fmt"
"time"
)
func main() {
t, err := time.Parse("01.02.2006 03:04:00", "10.10.2018 01:00:00")
if err != nil {
panic(err)
}
then := t.Add(time.Duration( -2 ) * time.Hour)
fmt.Printf("%v\n", then)
}
推荐阅读
- regex - 在 perl 正则表达式中获取和运行 shell 函数
- neo4j - 如果我有 Neo4j 图数据库,我可以在两个主节点的子节点之间建立关系吗?
- django - Django无法识别的令牌:“@”而查询
- amazon-web-services - 将所有对象复制到具有不同结构的不同区域的另一个 S3 存储桶
- java - 用于大数据的 Java Spring 服务器端 REST 流
- inheritance - 从没有强制转换类型的继承结构执行实际对象方法到继承类型
- ember.js - 为什么动态路由需要模型文件存在于 ember js 中
- python - 信息:爬取 0 页(以 0 页/分钟),抓取 0 项(以 0 项/分钟)
- python - 无法使用纸浆 python 库部署在圣杯上
- c++ - 我对 gdb 内存地址有疑问