检查两个日期之间的时间戳

Posted

技术标签:

【中文标题】检查两个日期之间的时间戳【英文标题】:check if timestamp between 2 dates 【发布时间】:2022-01-23 04:51:53 【问题描述】:

我将日期存储为 mongo 中的时间戳,例如,1564444800000000000。我想检查时间戳是否介于 2021 年 7 月 1 日和 2021 年 7 月这两个日期之间。我使用 https://www.epochconverter.com/ 将这两个日期转换为时间戳。我首先获取了所有记录,并在遍历记录时进行了这样的检查

cDate := 1564444800000000000
if  cDate > 1625167488000 &&  cDate <  1627759488000 
        log.Fatal("found one!")

但这似乎不起作用,因为我没有匹配。有更好的方法吗?

【问题讨论】:

【参考方案1】:

我的意思是只看数字:

cDate := 1564444800000000000
               1625167488000
               1627759488000

我不明白一个比它应该在它们之间的数字多六位的数字怎么会在它们之间。即使我们将CDate 除以1000000 也会是

cDate := 1564444800000
         1625167488000
         1627759488000

而且它仍然小于这两者,所以它仍然不会在它们之间。但话虽如此,您很可能只需要将cDate 除以1000000 并且您的示例不是一个好示例(因为 1564444800000 是 2019 年 7 月 29 日)

【讨论】:

【参考方案2】:

我建议转换一个日期,然后检查前后API,例如:

package main

import (
    "fmt"
    "time"
)

func main() 
    cDate := int64(1564444800000000000)
    firstJuly := time.Date(2019, 7, 1, 0, 0, 0, 0, time.UTC)
    thrirtyOneJuly := time.Date(2019, 7, 31, 0, 0, 0, 0, time.UTC)

    date := time.Unix(0, cDate)
    // fmt.Println(date) //will print 2019-07-30 00:00:00 +0000 UTC
    fmt.Println("Is July?", date.After(firstJuly) && date.Before(thrirtyOneJuly))

将打印

Is July? true

See on playground

【讨论】:

以上是关于检查两个日期之间的时间戳的主要内容,如果未能解决你的问题,请参考以下文章

Hivesql计算两个时间戳相差的分钟数

在pyspark数据框中的两个日期之间生成每月时间戳

在Java中打印两个时间戳之间的日期时间

从没有时间戳列的数据库表中增量获取两个日期之间的记录

SQL Server - 以 HH:MM:SS 格式计算两个日期时间戳之间的经过时间

Redshift - 在两个日期之间添加日期(月间隔)