datemath_parser

package module
v0.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2024 License: MIT Imports: 7 Imported by: 3

README

datemath-parser

this package is pure go package, this package can parse date match expression, which used by ElasticSearch.

Date Math Definition

you can click here to see date math definition. The date type supports using date math expression when using it in a range date query. The expression starts with an "anchor" date, which can be either now or a date string (in the applicable format) ending with ||. It can then follow by a math expression, supporting +, - and / (time rounding symbol). The support time units are:

time unit symbol meaning
y Years
M Months
w Weeks
d Days
h Hours
H Hours
m Minutes
s Seconds

Here are some samples: now+1h, now+1h+1m, now+1h/d, 2012-01-01||+1M/d.

Note, when doing range type searches, and the upper value is inclusive, the rounding will properly be rounded to the ceiling instead of flooring it.

Usage

Returns a time.Time struct object, which store utc time.

package main

import (
    "fmt"
    "github.com/zhuliquan/datemath_parser"
)

func main() {
    var parser = datemath_parser.NewDataMathParser()
    if t, err := parser.Parse("now+7M/d"); err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(t)
    } 
}

Documentation

Index

Constants

View Source
const (
	EPOCH_MILLIS                            = "epoch_millis"
	EPOCH_SECOND                            = "epoch_second"
	DATE_OPTIONAL_TIME                      = "date_optional_time"
	STRICT_DATE_OPTIONAL_TIME               = "strict_date_optional_time"
	STRICT_DATE_OPTIONAL_TIME_NANOS         = "strict_date_optional_time_nanos"
	BASIC_DATE                              = "basic_date"
	BASIC_DATE_TIME                         = "basic_date_time"
	BASIC_DATE_TIME_NO_MILLIS               = "basic_date_time_no_millis"
	BASIC_ORDINAL_DATE                      = "basic_ordinal_date"
	BASIC_ORDINAL_DATE_TIME                 = "basic_ordinal_date_time"
	BASIC_ORDINAL_DATE_TIME_NO_MILLIS       = "basic_ordinal_date_time_no_millis"
	BASIC_TIME                              = "basic_time"
	BASIC_TIME_NO_MILLIS                    = "basic_time_no_millis"
	BASIC_T_TIME                            = "basic_t_time"
	BASIC_T_TIME_NO_MILLIS                  = "basic_t_time_no_millis"
	BASIC_WEEK_DATE                         = "basic_week_date"
	STRICT_BASIC_WEEK_DATE                  = "strict_basic_week_date"
	BASIC_WEEK_DATE_TIME                    = "basic_week_date_time"
	STRICT_BASIC_WEEK_DATE_TIME             = "strict_basic_week_date_time"
	BASIC_WEEK_DATE_TIME_NO_MILLIS          = "basic_week_date_time_no_millis"
	STRICT_BASIC_WEEK_DATE_TIME_NO_MILLIS   = "strict_basic_week_date_time_no_millis"
	DATE                                    = "date"
	STRICT_DATE                             = "strict_date"
	DATE_HOUR                               = "date_hour"
	STRICT_DATE_HOUR                        = "strict_date_hour"
	DATE_HOUR_MINUTE                        = "date_hour_minute"
	STRICT_DATE_HOUR_MINUTE                 = "strict_date_hour_minute"
	DATE_HOUR_MINUTE_SECOND                 = "date_hour_minute_second"
	STRICT_DATE_HOUR_MINUTE_SECOND          = "strict_date_hour_minute_second"
	DATE_HOUR_MINUTE_SECOND_FRACTION        = "date_hour_minute_second_fraction"
	STRICT_DATE_HOUR_MINUTE_SECOND_FRACTION = "strict_date_hour_minute_second_fraction"
	DATE_HOUR_MINUTE_SECOND_MILLIS          = "date_hour_minute_second_millis"
	STRICT_DATE_HOUR_MINUTE_SECOND_MILLIS   = "strict_date_hour_minute_second_millis"
	DATE_TIME                               = "date_time"
	STRICT_DATE_TIME                        = "strict_date_time"
	DATE_TIME_NO_MILLIS                     = "date_time_no_millis"
	HOUR                                    = "hour"
	TIME_NO_MILLIS                          = "time_no_millis"
	HOUR_MINUTE                             = "hour_minute"
	HOUR_MINUTE_SECOND                      = "hour_minute_second"
	HOUR_MINUTE_SECOND_FRACTION             = "hour_minute_second_fraction"
	HOUR_MINUTE_SECOND_MILLIS               = "hour_minute_second_millis"
	ORDINAL_DATE                            = "ordinal_date"
	ORDINAL_DATE_TIME                       = "ordinal_date_time"
	ORDINAL_DATE_TIME_NO_MILLIS             = "ordinal_date_time_no_millis"
	TIME                                    = "time"
	T_TIME                                  = "t_time"
	T_TIME_NO_MILLIS                        = "t_time_no_millis"
	WEEK_DATE                               = "week_date"
	WEEK_DATE_TIME                          = "week_date_time"
	WEEK_DATE_TIME_NO_MILLIS                = "week_date_time_no_millis"
	WEEKYEAR                                = "weekyear"
	WEEKYEAR_WEEK                           = "weekyear_week"
	WEEKYEAR_WEEK_DAY                       = "weekyear_week_day"
	YEAR_MONTH                              = "year_month"
	YEAR                                    = "year"
	YEAR_MONTH_DAY                          = "year_month_day"
	STRICT_TIME_NO_MILLIS                   = "strict_time_no_millis"
	STRICT_DATE_TIME_NO_MILLIS              = "strict_date_time_no_millis"
	STRICT_HOUR                             = "strict_hour"
	STRICT_HOUR_MINUTE                      = "strict_hour_minute"
	STRICT_HOUR_MINUTE_SECOND               = "strict_hour_minute_second"
	STRICT_HOUR_MINUTE_SECOND_FRACTION      = "strict_hour_minute_second_fraction"
	STRICT_HOUR_MINUTE_SECOND_MILLIS        = "strict_hour_minute_second_millis"
	STRICT_ORDINAL_DATE                     = "strict_ordinal_date"
	STRICT_ORDINAL_DATE_TIME                = "strict_ordinal_date_time"
	STRICT_ORDINAL_DATE_TIME_NO_MILLIS      = "strict_ordinal_date_time_no_millis"
	STRICT_TIME                             = "strict_time"
	STRICT_T_TIME                           = "strict_t_time"
	STRICT_T_TIME_NO_MILLIS                 = "strict_t_time_no_millis"
	STRICT_WEEK_DATE                        = "strict_week_date"
	STRICT_WEEK_DATE_TIME                   = "strict_week_date_time"
	STRICT_WEEK_DATE_TIME_NO_MILLIS         = "strict_week_date_time_no_millis"
	STRICT_WEEKYEAR                         = "strict_weekyear"
	STRICT_WEEKYEAR_WEEK                    = "strict_weekyear_week"
	STRICT_WEEKYEAR_WEEK_DAY                = "strict_weekyear_week_day"
	STRICT_YEAR_MONTH                       = "strict_year_month"
	STRICT_YEAR                             = "strict_year"
	STRICT_YEAR_MONTH_DAY                   = "strict_year_month_day"
)

Variables

View Source
var BuiltInFormat = map[string][]string{

	EPOCH_MILLIS: {EPOCH_MILLIS},

	EPOCH_SECOND: {EPOCH_SECOND},

	DATE_OPTIONAL_TIME:        {"yyyy-MM-ddTHH:mm:ss.SSSZ", "yyyy-MM-dd"},
	STRICT_DATE_OPTIONAL_TIME: {"yyyy-MM-ddTHH:mm:ss.SSSZ", "yyyy-MM-dd"},

	STRICT_DATE_OPTIONAL_TIME_NANOS: {"yyyy-MM-ddTHH:mm:ss.SSSSSSZ", "yyyy-MM-dd"},

	BASIC_DATE: {"yyyyMMdd"},

	BASIC_DATE_TIME: {"yyyyMMddTHHmmss.SSSZ"},

	BASIC_DATE_TIME_NO_MILLIS: {"yyyyMMddTHHmmssZ"},

	BASIC_ORDINAL_DATE: {"yyyyDDD"},

	BASIC_ORDINAL_DATE_TIME: {"yyyyDDDTHHmmss.SSSZ"},

	BASIC_ORDINAL_DATE_TIME_NO_MILLIS: {"yyyyDDDTHHmmssZ"},

	BASIC_TIME: {"HHmmss.SSSZ"},

	BASIC_TIME_NO_MILLIS: {"HHmmssZ"},

	BASIC_T_TIME: {"THHmmss.SSSZ"},

	BASIC_T_TIME_NO_MILLIS: {"THHmmssZ"},

	BASIC_WEEK_DATE:        {"xxxxWwwe"},
	STRICT_BASIC_WEEK_DATE: {"xxxxWwwe"},

	BASIC_WEEK_DATE_TIME:        {"xxxxWwweTHHmmss.SSSZ"},
	STRICT_BASIC_WEEK_DATE_TIME: {"xxxxWwweTHHmmss.SSSZ"},

	BASIC_WEEK_DATE_TIME_NO_MILLIS:        {"xxxxWwweTHHmmssZ"},
	STRICT_BASIC_WEEK_DATE_TIME_NO_MILLIS: {"xxxxWwweTHHmmssZ"},

	DATE:        {"yyyy-MM-dd"},
	STRICT_DATE: {"yyyy-MM-dd"},

	DATE_HOUR:        {"yyyy-MM-ddTHH"},
	STRICT_DATE_HOUR: {"yyyy-MM-ddTHH"},

	DATE_HOUR_MINUTE:        {"yyyy-MM-ddTHH:mm"},
	STRICT_DATE_HOUR_MINUTE: {"yyyy-MM-ddTHH:mm"},

	DATE_HOUR_MINUTE_SECOND:        {"yyyy-MM-ddTHH:mm:ss"},
	STRICT_DATE_HOUR_MINUTE_SECOND: {"yyyy-MM-ddTHH:mm:ss"},

	DATE_HOUR_MINUTE_SECOND_FRACTION:        {"yyyy-MM-ddTHH:mm:ss.SSS"},
	STRICT_DATE_HOUR_MINUTE_SECOND_FRACTION: {"yyyy-MM-ddTHH:mm:ss.SSS"},

	DATE_HOUR_MINUTE_SECOND_MILLIS:        {"yyyy-MM-ddTHH:mm:ss.SSS"},
	STRICT_DATE_HOUR_MINUTE_SECOND_MILLIS: {"yyyy-MM-ddTHH:mm:ss.SSS"},

	DATE_TIME:        {"yyyy-MM-ddTHH:mm:ss.SSSZ"},
	STRICT_DATE_TIME: {"yyyy-MM-ddTHH:mm:ss.SSSZ"},

	DATE_TIME_NO_MILLIS:        {"yyyy-MM-ddTHH:mm:ssZ"},
	STRICT_DATE_TIME_NO_MILLIS: {"yyyy-MM-ddTHH:mm:ssZ"},

	HOUR:        {"HH"},
	STRICT_HOUR: {"HH"},

	HOUR_MINUTE:        {"HH:mm"},
	STRICT_HOUR_MINUTE: {"HH:mm"},

	HOUR_MINUTE_SECOND:        {"HH:mm:ss"},
	STRICT_HOUR_MINUTE_SECOND: {"HH:mm:ss"},

	HOUR_MINUTE_SECOND_FRACTION:        {"HH:mm:ss.SSS"},
	STRICT_HOUR_MINUTE_SECOND_FRACTION: {"HH:mm:ss.SSS"},

	HOUR_MINUTE_SECOND_MILLIS:        {"HH:mm:ss.SSS"},
	STRICT_HOUR_MINUTE_SECOND_MILLIS: {"HH:mm:ss.SSS"},

	ORDINAL_DATE:        {"yyyy-DDD"},
	STRICT_ORDINAL_DATE: {"yyyy-DDD"},

	ORDINAL_DATE_TIME:        {"yyyy-DDDTHH:mm:ss.SSSZ"},
	STRICT_ORDINAL_DATE_TIME: {"yyyy-DDDTHH:mm:ss.SSSZ"},

	ORDINAL_DATE_TIME_NO_MILLIS:        {"yyyy-DDDTHH:mm:ssZ"},
	STRICT_ORDINAL_DATE_TIME_NO_MILLIS: {"yyyy-DDDTHH:mm:ssZ"},

	TIME:        {"HH:mm:ss.SSSZ"},
	STRICT_TIME: {"HH:mm:ss.SSSZ"},

	TIME_NO_MILLIS:        {"HH:mm:ssZ"},
	STRICT_TIME_NO_MILLIS: {"HH:mm:ssZ"},

	T_TIME:        {"THH:mm:ss.SSSZ"},
	STRICT_T_TIME: {"THH:mm:ss.SSSZ"},

	T_TIME_NO_MILLIS:        {"THH:mm:ssZ"},
	STRICT_T_TIME_NO_MILLIS: {"THH:mm:ssZ"},

	WEEK_DATE:        {"xxxx-Www-e"},
	STRICT_WEEK_DATE: {"xxxx-Www-e"},

	WEEK_DATE_TIME:        {"xxxx-Www-eTHH:mm:ss.SSSZ"},
	STRICT_WEEK_DATE_TIME: {"xxxx-Www-eTHH:mm:ss.SSSZ"},

	WEEK_DATE_TIME_NO_MILLIS:        {"xxxx-Www-eTHH:mm:ssZ"},
	STRICT_WEEK_DATE_TIME_NO_MILLIS: {"xxxx-Www-eTHH:mm:ssZ"},

	WEEKYEAR:        {"xxxx"},
	STRICT_WEEKYEAR: {"xxxx"},

	WEEKYEAR_WEEK:        {"xxxx-Www"},
	STRICT_WEEKYEAR_WEEK: {"xxxx-Www"},

	WEEKYEAR_WEEK_DAY:        {"xxxx-Www-e"},
	STRICT_WEEKYEAR_WEEK_DAY: {"xxxx-Www-e"},

	YEAR_MONTH:        {"yyyy-MM"},
	STRICT_YEAR_MONTH: {"yyyy-MM"},

	YEAR:        {"yyyy"},
	STRICT_YEAR: {"yyyy"},

	YEAR_MONTH_DAY:        {"yyyy-MM-dd"},
	STRICT_YEAR_MONTH_DAY: {"yyyy-MM-dd"},
}

built-in format

View Source
var TimeZoneOffset = regexp.MustCompile(`(\+|-)(\d{1,2}):(\d{1,2})`)

Functions

This section is empty.

Types

type DateMathParser

type DateMathParser struct {
	Formats  []string
	TimeZone *time.Location
}

func NewDateMathParser

func NewDateMathParser(opts ...DateMathParserOption) (*DateMathParser, error)

func (*DateMathParser) Parse

func (p *DateMathParser) Parse(expr string) (time.Time, error)

type DateMathParserOption added in v0.0.3

type DateMathParserOption func(*DateMathParser) error

func WithFormat added in v0.0.3

func WithFormat(formats []string) DateMathParserOption

func WithTimeZone added in v0.0.3

func WithTimeZone(timeZone string) DateMathParserOption

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL