func NewDateTime() DateTime {
	return DateTime(time.Unix(0, 0).UTC())
}
NewDateTime is a representation of zero value for DateTime type
package strfmt
import (
	"encoding/json"
	"fmt"
	"regexp"
	"strings"
	"time"
)
func init() {
	dt := DateTime{}
	Default.Add("datetime", &dt, IsDateTime)
}
func IsDateTime(str string) bool {
	if len(str) < 4 {
		return false
	}
	s := strings.Split(strings.ToLower(str), "t")
	if len(s) < 2 || !IsDate(s[0]) {
		return false
	}
	matches := rxDateTime.FindAllStringSubmatch(s[1], -1)
	if len(matches) == 0 || len(matches[0]) == 0 {
		return false
	}
	m := matches[0]
	res := m[1] <= "23" && m[2] <= "59" && m[3] <= "59"
	return res
}
const (
	RFC3339Millis = "2006-01-02T15:04:05.000Z07:00"
	RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00"
	ISO8601LocalTime = "2006-01-02T15:04:05"
	DateTimePattern = `^([0-9]{2}):([0-9]{2}):([0-9]{2})(.[0-9]+)?(z|([+-][0-9]{2}:[0-9]{2}))$`
)
var (
	dateTimeFormats = []string{RFC3339Micro, RFC3339Millis, time.RFC3339, time.RFC3339Nano, ISO8601LocalTime}
	rxDateTime      = regexp.MustCompile(DateTimePattern)
	MarshalFormat = RFC3339Millis
)
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
		}
		return DateTime(dd), nil
	}
	return DateTime{}, lastError
}
type DateTime time.Time