当前位置: 首页 > 面试题库 >

去时间比较

怀刚毅
2023-03-14
问题内容

我试图创建简单的功能,只是将一个时间的时区更改为另一个时区(假设UTC为+0700
WIB)。这是源代码。我有2个函数,第GenerateWIB一个将具有相同日期时间的时区更改为+0700
WIB。其次是GenerateUTC将给定时间的时区更改为UTCGenerateUTC可以完美地工作,而另一个则不能。

expect := time.Date(2016, 12, 12, 1, 2, 3, 4, wib)
t1 := time.Date(2016, 12, 12, 1, 2, 3, 4, time.UTC)
res := GenerateWIB(t1)
if res != expect {
    fmt.Printf("WIB Expect %+v, but get %+v", expect, res)
}

res != expect始终对这个结果fullfilled。

WIB Expect 2016-12-12 01:02:03.000000004 +0700 WIB, but get 2016-12-12 01:02:03.000000004 +0700 WIB

但这是同一时间吗?我错过了什么?


问题答案:

有一种.Equal()比较日期的方法:

if !res.Equal(expect) {
   ...

引用文档:

请注意,Go
==运算符不仅会比较即时时间,还会比较“位置”和单调时钟读数。因此,在不首先确保已为所有值设置相同的“位置”(不可以通过使用UTC或“本地”方法实现)并且已将单调时钟读数剥离的情况下,不应将“时间”值用作映射或数据库键。设置t
= t.Round(0)通常,首选t.Equal(u)而不是t ==
u,因为t.Equal使用可用的最精确比较,并且仅当其参数之一具有单调时钟读数时才正确处理这种情况。

如果查看该time.Time结构的代码,则可以看到该结构具有三个私有字段:

type Time struct {
    ...
    wall uint64
    ext  int64

    ...
    loc *Location
}

关于这些字段的注释清楚地表明,根据Time构造的方式,两个Time描述相同时间点的字段可能具有不同的值。

运行res == expect比较这些内部字段的值,
运行res.Equal(expect)尝试做您期望的事情。



 类似资料:
  • 问题内容: 以我想使其正常工作的方式,这可能是不可能的,但是可以了。 数据库中的条目是: 但是,查询不返回任何结果。当然,如果涉及到日期,这将起作用,但是没有涉及。如果开始= ‘00:00:00’,它也将起作用。 问题答案: 我认为您正在寻找的是: 我不确定您是否需要使用CAST,尽管这也可以工作。

  • 问题内容: 我有时间,必须由用户以这种格式输入。 但是,我想比较上午10点到下午6点之间的时间(例如11:22)?但是,我该如何比较呢? 问题答案: Java还没有一个好的内置类(它有一个用于JDBC查询的类,但这不是你想要的)。 一种选择是使用JodaTime API和它的本地时间类。 只使用内置的Java API,就只能使用java.util.Date。你可以使用SimpleDateForma

  • 问题内容: 如何在PHP中比较时间? 我想这样说: 上面的代码无法正常打印。我期望如此。 问题答案: $ThatTime =”14:08:10”; if (time() >= strtotime($ThatTime)) { echo “ok”; } 使用(也考虑时区)的解决方案。

  • 问题内容: 我一直在寻找答案已有几个小时,但找不到。 我正在写一个简单的。用户设置他们的工作开始和结束时间。例如,某人的工作时间是从8:00到16:00。我该如何减去这个时间来查看此人已经工作了多长时间了? 我正在尝试,但没有成功… 问题答案: 以下是更好的方法: 那会给你带来时间上的差异。

  • 问题内容: 我有一个价值,我想得到另一个正好是1个月前的时间。 我知道可以用(想要另一个)进行减法,但这会导致a,而我反过来需要它。 问题答案: 尝试AddDate: 产生: 游乐场:http://play.golang.org/p/QChq02kisT

  • 我在试着比较时间和瞬间。这是我的剧本 这是我的表格 从< code > console . log(today . format(" hh:mm "))我得到这个结果< code>01:44。 在上面的脚本中,我总是转到<code>或<code>,因此有任何方法可以修复它吗? 这是我的小提琴 https://jsfiddle.net/s9wfh9ye/33/ 我的更新问题