diff --git a/types/date.go b/types/date.go index d1703aa..4897776 100644 --- a/types/date.go +++ b/types/date.go @@ -57,6 +57,21 @@ func ParseDate(t string) (Date, error) { return NewEmptyDate(), fmt.Errorf("无法解析给定的日期,格式不正确。") } +func ParseDatep(t string) (*Date, error) { + if len(t) == 0 { + return nil, fmt.Errorf("不能解析空白的日期时间。") + } + for _, layout := range dateLayouts { + d, err := time.ParseInLocation(layout, t, loc) + if err == nil { + return &Date{ + Time: d, + }, nil + } + } + return nil, fmt.Errorf("无法解析给定的日期,格式不正确。") +} + func ParseDateWithDefault(t string, defaultDate Date) Date { if len(t) == 0 { return defaultDate diff --git a/types/datetime.go b/types/datetime.go index d6d8140..56e4025 100644 --- a/types/datetime.go +++ b/types/datetime.go @@ -67,6 +67,22 @@ func ParseDateTime(t string) (DateTime, error) { return NewEmptyDateTime(), fmt.Errorf("无法解析给定的日期时间,格式不正确。") } +func ParseDateTimep(t string) (*DateTime, error) { + if len(t) == 0 { + return nil, fmt.Errorf("不能解析空白的日期时间。") + } + for _, layout := range datetimeLayouts { + fmt.Printf("Parse: %s, Try layout: %s\n", t, layout) + d, err := time.ParseInLocation(layout, t, loc) + if err == nil { + return &DateTime{ + Time: d, + }, nil + } + } + return nil, fmt.Errorf("无法解析给定的日期时间,格式不正确。") +} + var _ driver.Valuer = (*DateTime)(nil) func (dt DateTime) Value() (driver.Value, error) {