Golang Go语言中求个时间比较的方法

发布于 1周前 作者 wuwangju 来自 Go语言

Golang Go语言中求个时间比较的方法

已知时间

  • t0,t1,t2...ta,tx,ty,tz,tb,tz, 求 ta 到 tb 中距离 tz 最近的一个时间 ,时间范围满足有且只有 ta tb 。不能在 ta 之前 不能在 tz 之后。
  • 试过 tz.Sub(ta)和 to.Sub(tb)比较 不行。
  • 试了 Before() 也试过 After() 用 for 循环之后时间-4 会退回到 ta 之前。不减 4 无法判断。 有什么其他思路吗?谢谢

更多关于Golang Go语言中求个时间比较的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

14 回复

都不知道你说啥,代码也不给,一句不行,谁知道你说啥不行? Sub 怎么就不能比较了? After, Before 怎么就不能比较了?你究竟想比较啥?

更多关于Golang Go语言中求个时间比较的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Unix()通通转成 int64, 想怎么比较都行。

没听明白

不能在 tz 之后的话…tb 的意义在哪…?

ta tb 二选一 而且 tb 出现的几率极少 千年没见一次 这是万年历当中定冬至前朔的计算

没看明白。求最近的时间点 转成时间戳然后相减取绝对值不行吗

fmt.Println(tz.(type))
输出是什么

use of .(type) outside type switch

我也是服了……能不能直接告诉我你用的类型。

import (
“reflect”
“fmt”
)
func main() {

fmt.Println(typeof(v))
}
func typeof(v interface{}) string {
return reflect.TypeOf(v).String()
}

不敢帮了。

“t0,t1,t2…ta,tx,ty,tz,tb,tz, 求 ta 到 tb 中距离 tz 最近的一个时间”,这不就是 tb ?

“时间范围满足有且只有 ta tb ”,意义不明

“不能在 ta 之前 不能在 tz 之后”,你这个范围究竟是 [ta, tb] 还是 [ta, tz] ?

“试过 tz.Sub(ta)和 to.Sub(tb)比较 不行”,to 哪来的?不行是指什么不行?

“试了 Before() 也试过 After() ”,能不能给个表达式来说明你的意思?

“用 for 循环之后时间-4 会退回到 ta 之前”,没有代码谁知道你说什么循环?

没人明白你什么思路,更不可能给你其他思路。

time.Time 类型

在Go语言中,进行时间比较是一项非常常见的任务,通常使用标准库中的time包来处理。time.Time类型提供了多种方法来进行时间的比较和运算。

以下是一个简单的时间比较示例:

package main

import (
	"fmt"
	"time"
)

func main() {
	// 定义两个时间
	time1 := time.Date(2023, 10, 1, 12, 0, 0, 0, time.UTC)
	time2 := time.Date(2023, 10, 2, 12, 0, 0, 0, time.UTC)

	// 使用Before, After和Equal方法进行比较
	if time1.Before(time2) {
		fmt.Println("time1在time2之前")
	} else if time1.After(time2) {
		fmt.Println("time1在time2之后")
	} else {
		fmt.Println("time1和time2相等")
	}

	// 也可以使用Sub方法计算时间差,然后进行比较
	duration := time2.Sub(time1)
	if duration > 0 {
		fmt.Println("time2比time1晚", duration)
	} else {
		fmt.Println("time2不比time1晚")
	}
}

在这个示例中,我们使用了BeforeAfterEqual方法来直接比较两个time.Time对象。此外,我们还展示了如何使用Sub方法来计算两个时间之间的差异,并基于该差异进行比较。这些方法使得在Go中进行时间比较变得既简单又直观。

回到顶部