Files
copier/copier_time_test.go
2025-09-28 16:16:30 +08:00

88 lines
1.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package copier_test
import (
"encoding/json"
"fmt"
"testing"
"time"
"git.charlienet.top/go/copier"
)
type MyString string
type MyTime time.Time
func TestTime(t *testing.T) {
// 示例1为内置字符串类型设置时间格式
now := time.Now()
var str string
copier.Copy(&str, now, copier.WithStringTimeFormat("2006-01-02 15:04:05"))
fmt.Printf("时间转字符串: %s\n", str)
// 示例2为自定义字符串类型设置时间格式
var myStr MyString
copier.Copy(&myStr, now, copier.WithTimeFormat(MyString(""), "2006/01/02"))
fmt.Printf("时间转自定义字符串: %s\n", myStr)
// 示例3设置默认时间格式
var str1 string
copier.Copy(&str1, now, copier.WithTimeFormat(MyString(""), "2006/01/02"))
fmt.Printf("默认格式: %s\n", str1)
// 示例5字符串转时间
timeStr := "2023-12-25 10:30:00"
var parsedTime time.Time
copier.Copy(&parsedTime, timeStr,
copier.WithStringTimeFormat("2006-01-02 15:04:05"),
copier.WithTimeFormat(MyString(""), "2006/01/02"),
copier.WithDefaultTimeFormat(time.RFC3339))
fmt.Printf("字符串转时间: %v\n", parsedTime)
}
func TestTimeStruct(t *testing.T) {
type User struct {
Name string
CreatedAt *time.Time
}
src := map[string]any{
"Name": "John",
"CreatedAt": "2023-01-01T10:00:00Z",
}
var user User
if err := copier.Copy(&user, src, copier.WithStringTimeFormat(time.RFC3339)); err != nil {
fmt.Printf("错误: %v\n", err)
} else {
fmt.Printf("用户: %+v\n", user)
b, _ := json.Marshal(user)
t.Log(string(b))
}
// user.CreatedAt
}
func TestFieldTag(t *testing.T) {
type User struct {
Name string
CreatedAt time.Time `copier:"format=2006-01-02 15:04:05"`
}
type User2 struct {
Name string
CreatedAt string
}
var src = User{
Name: "John",
CreatedAt: time.Now(),
}
var dst User2
if err := copier.Copy(&dst, src); err != nil {
fmt.Printf("错误: %v\n", err)
} else {
fmt.Printf("用户: %+v\n", dst)
}
}