time.go
func ParseDateTime(data string) (DateTime, error) {
	if data == "" {
		return NewDateTime(), nil
	}
	var lastError error
	for _, layout := range dateTimeFormats {
		dd, err := time.Parse(layout, data)
		if err != nil {
			lastError = err
			continue
		}
		lastError = nil
		return DateTime(dd), nil
	}
	return DateTime{}, lastError
}
func ParseDateTime(data string) (DateTime, error) {
	if data == "" {
		return NewDateTime(), nil
	}
	var lastError error
	for _, layout := range dateTimeFormats {
		dd, err := time.Parse(layout, data)
		if err != nil {
			lastError = err
			continue
		}
		lastError = nil
		return DateTime(dd), nil
	}
	return DateTime{}, lastError
}
func ParseDateTime ( data string ) ( DateTime , error ) { if data == " " { return NewDateTime ( ) , nil } var lastError error for _ , layout := range dateTimeFormats { dd , err := time . Parse ( layout , data ) if err != nil { lastError = err continue } lastError = nil return DateTime ( dd ) , nil } return DateTime { } , lastError }
// ParseDateTime parses a string that represents an ISO8601 time or a unix epoch
ParseDateTime parses a string that represents an ISO8601 time or a unix epoch