package testfixtures

import (
	"fmt"
	"time"
)

var timeFormats = [...]string{
	"2006-01-02",
	"2006-01-02 15:04",
	"2006-01-02 15:04:05",
	"20060102",
	"20060102 15:04",
	"20060102 15:04:05",
	"02/01/2006",
	"02/01/2006 15:04",
	"02/01/2006 15:04:05",
	"2006-01-02T15:04-07:00",
	"2006-01-02T15:04:05-07:00",
	"2006-01-02T15:04:05Z07:00",
	"2006-01-02 15:04:05Z07:00",
	"2006-01-02T15:04:05Z0700",
	"2006-01-02 15:04:05Z0700",
	"2006-01-02T15:04:05Z07",
	"2006-01-02 15:04:05Z07",
	"2006-01-02 15:04:05 MST",
}

func (l *Loader) tryStrToDate(s string) (time.Time, error) {
	loc := l.location
	if loc == nil {
		loc = time.Local
	}

	for _, f := range timeFormats {
		t, err := time.ParseInLocation(f, s, loc)
		if err != nil {
			continue
		}
		return t, nil
	}
	return time.Time{}, fmt.Errorf(`testfixtures: could not convert string "%s" to time`, s)
}