func ParseIn(datestr string, loc *time.Location, opts ...ParserOption) (time.Time, error) {
	p, err := parseTime(datestr, loc, opts...)
	if err != nil {
		return time.Time{}, err
	}
	return p.parse()
}
ParseIn with Location, equivalent to time.ParseInLocation() timezone/offset
rules.  Using location arg, if timezone/offset info exists in the
datestring, it uses the given location rules for any zone interpretation.
That is, MST means one thing when using America/Denver and something else
in other locations.
package dateparse
import (
	"fmt"
	"strconv"
	"strings"
	"time"
	"unicode"
	"unicode/utf8"
)
var days = []string{
	"mon",
	"tue",
	"wed",
	"thu",
	"fri",
	"sat",
	"sun",
	"monday",
	"tuesday",
	"wednesday",
	"thursday",
	"friday",
	"saturday",
	"sunday",
}
var months = []string{
	"january",
	"february",
	"march",
	"april",
	"may",
	"june",
	"july",
	"august",
	"september",
	"october",
	"november",
	"december",
}
type dateState uint8
type timeState uint8
const (
	dateStart dateState = iota  
	dateDigit
	dateDigitSt
	dateYearDash
	dateYearDashAlphaDash
	dateYearDashDash
	dateYearDashDashWs  
	dateYearDashDashT
	dateYearDashDashOffset
	dateDigitDash
	dateDigitDashAlpha
	dateDigitDashAlphaDash  
	dateDigitDot
	dateDigitDotDot
	dateDigitSlash
	dateDigitYearSlash
	dateDigitSlashAlpha  
	dateDigitColon
	dateDigitChineseYear
	dateDigitChineseYearWs
	dateDigitWs
	dateDigitWsMoYear  
	dateDigitWsMolong
	dateAlpha
	dateAlphaWs
	dateAlphaWsDigit
	dateAlphaWsDigitMore  
	dateAlphaWsDigitMoreWs
	dateAlphaWsDigitMoreWsYear
	dateAlphaWsMonth
	dateAlphaWsDigitYearmaybe
	dateAlphaWsMonthMore
	dateAlphaWsMonthSuffix
	dateAlphaWsMore
	dateAlphaWsAtTime
	dateAlphaWsAlpha
	dateAlphaWsAlphaYearmaybe  
	dateAlphaPeriodWsDigit
	dateWeekdayComma
	dateWeekdayAbbrevComma
)
const (
	timeIgnore timeState = iota  
	timeStart
	timeWs
	timeWsAlpha
	timeWsAlphaWs
	timeWsAlphaZoneOffset  
	timeWsAlphaZoneOffsetWs
	timeWsAlphaZoneOffsetWsYear
	timeWsAlphaZoneOffsetWsExtra
	timeWsAMPMMaybe
	timeWsAMPM  
	timeWsOffset
	timeWsOffsetWs  
	timeWsOffsetColonAlpha
	timeWsOffsetColon
	timeWsYear  
	timeOffset
	timeOffsetColon
	timeAlpha
	timePeriod
	timePeriodOffset  
	timePeriodOffsetColon
	timePeriodOffsetColonWs
	timePeriodWs
	timePeriodWsAlpha
	timePeriodWsOffset  
	timePeriodWsOffsetWs
	timePeriodWsOffsetWsAlpha
	timePeriodWsOffsetColon
	timePeriodWsOffsetColonAlpha
	timeZ
	timeZDigit
)
var (
	ErrAmbiguousMMDD = fmt.Errorf("This date has ambiguous mm/dd vs dd/mm type format")
)
func unknownErr(datestr string) error {
	return fmt.Errorf("Could not find format for %q", datestr)
}
func ParseAny(datestr string, opts ...ParserOption) (time.Time, error) {
	p, err := parseTime(datestr, nil, opts...)
	if err != nil {
		return time.Time{}, err
	}
	return p.parse()
}