voucher/internal/pkg/helper/datetime_test.go

136 lines
3.1 KiB
Go

package helper
import (
"fmt"
"testing"
"time"
)
func TestParse(t *testing.T) {
got, err := Parse("2024-10-01 10:26:57")
if err != nil {
t.Errorf("TestParse() error = %v", err)
return
}
t.Log(got)
got2, err := Parse2("2024-10-01 10:26:57")
if err != nil {
t.Errorf("TestParse() error = %v", err)
return
}
t.Log(got2)
}
func TestDateStringToTime(t *testing.T) {
got, err := DateStringToTime("2024-01-01 00:00:00")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
t.Log(got)
got2, err := DateStringToTime("2024-01-01 00:00:00")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
t.Log(got2)
t.Log(got.Equal(got2))
}
func TestIsTimeBefore(t *testing.T) {
bes, err := DateStringToTime("2024-01-12 00:00:00")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
bts, err := DateStringToTime("2024-01-20 00:00:00")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
b := IsTimeBefore(bes, bts)
t.Log(b) // false
}
func TestIsInSameNaturalMonth(t *testing.T) {
startTime, err := DateStringToTime("2024-01-12 12:12:12")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
endTime, err := DateStringToTime("2024-02-12 12:12:12")
if err != nil {
t.Errorf("DateStringToTime() error = %v", err)
return
}
b := IsInSameNaturalMonth(startTime, endTime)
t.Log(b) // false
}
func TestRFC3339(t *testing.T) {
// 输入的时间字符串
availableBeginTimeStr := "2025-03-07T00:00:00+08:00"
availableEndTimeStr := "2025-06-05T23:59:59+08:00"
// 定义输入时间字符串的格式
inputFormat := time.RFC3339
// 解析开始时间
availableBeginTime, err := time.Parse(inputFormat, availableBeginTimeStr)
if err != nil {
fmt.Printf("解析开始时间出错: %v\n", err)
return
}
// 解析结束时间
availableEndTime, err := time.Parse(inputFormat, availableEndTimeStr)
if err != nil {
fmt.Printf("解析结束时间出错: %v\n", err)
return
}
// 定义输出时间的格式
outputFormat := "2006-01-02 15:04:05"
// 格式化开始时间
formattedBeginTime := availableBeginTime.Format(outputFormat)
// 格式化结束时间
formattedEndTime := availableEndTime.Format(outputFormat)
// 输出格式化后的时间
fmt.Printf("格式化后的开始时间: %s\n", formattedBeginTime)
fmt.Printf("格式化后的结束时间: %s\n", formattedEndTime)
}
func TestDaysBetween(t *testing.T) {
// 输入的时间字符串
availableBeginTimeStr := "2025-03-07T00:00:00+08:00"
availableEndTimeStr := "2025-06-05T23:59:59+08:00"
// 定义输入时间字符串的格式
inputFormat := time.RFC3339
// 解析开始时间
availableBeginTime, err := time.Parse(inputFormat, availableBeginTimeStr)
if err != nil {
fmt.Printf("解析开始时间出错: %v\n", err)
return
}
// 解析结束时间
availableEndTime, err := time.Parse(inputFormat, availableEndTimeStr)
if err != nil {
fmt.Printf("解析结束时间出错: %v\n", err)
return
}
days, err := DaysBetween(availableBeginTime, availableEndTime)
if err != nil {
fmt.Printf("解析结束时间出错: %v\n", err)
return
}
t.Log(days)
}