123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package test
- import (
- "fmt"
- "testing"
- "time"
- )
- /*周期记录时间测试
- 1、2、5、6、10、10、15、20、30、60
- */
- func TestPeriodw(t *testing.T) {
- // 基准时间
- baseTime, _ := time.Parse("2006-01-02 15:04:05", "2017-03-13 13:20:45")
- // 输入的时间列表
- inputTimes := []string{
- "2017-03-13 13:20:45",
- "2017-03-13 13:24:45",
- "2024-04-14 13:26:10",
- "2024-04-15 13:29:59",
- "2023-04-11 13:30:10",
- "2023-05-11 13:33:23",
- "2023-05-11 13:39:38",
- "2023-05-11 13:41:23",
- "2023-05-11 13:43:34",
- "2023-05-11 13:54:30",
- "2023-05-11 13:50:00",
- "2023-05-11 13:51:00",
- }
- // 设置时间间隔(分钟)
- interval := 2
- // 遍历输入时间并转换
- for _, inputTimeStr := range inputTimes {
- inputTime, _ := time.Parse("2006-01-02 15:04:05", inputTimeStr)
- transformedTime := ConvertTime(baseTime, inputTime, interval)
- fmt.Printf("%s 转换为 %s\n", inputTimeStr, transformedTime.Format("2006-01-02 15:04:05"))
- }
- }
- // ConvertTime 根据基准时间和间隔将输入时间转换为指定格式
- func ConvertTime(baseTime time.Time, inputTime time.Time, intervalMinutes int) time.Time {
- // 计算输入时间距离基准时间的总分钟数
- minutesDiff := int(inputTime.Sub(baseTime).Minutes())
- // 计算离基准时间最近的间隔
- if minutesDiff < 0 {
- // 如果输入时间早于基准时间,返回基准时间
- return baseTime
- }
- // 计算最近的间隔
- closestInterval := (minutesDiff / intervalMinutes) * intervalMinutes
- // 返回基准时间加上最近的间隔
- return baseTime.Add(time.Duration(closestInterval) * time.Minute)
- }
|