duration

package module
v0.0.0-...-d27cc0c Latest Latest
Warning

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

Go to latest
Published: May 27, 2016 License: MIT Imports: 9 Imported by: 2

README

iso8601duration

ISO8601 Duration Parser for Golang

Provides a partial implementation of ISO8601 durations. Parsing doesn't take into consideration variable lengths of days (2425), months (2831) nor years (365~366). It will default to the following:

  • 1 Day = 24 Hours
  • 1 Month = 30 Days
  • 1 Year = 365 Days

Also, converting back to string will omit months and work with days and weeks.

e.g.

INPUT     OUTPUT
P1M       P30D
P1M5D     P5W
P1Y1M5D   P1Y35D

Adapted from http://github.com/BrianHicks/finch

Documentation

Overview

Package duration provides a partial implementation of ISO8601 durations. Constant values are assumed for non-constant timespans for convenience 1 Day = 24 Hours 1 Month = 30 Days 1 Year = 365 Days

Index

Constants

View Source
const (
	Day   = time.Hour * 24
	Week  = Day * 7
	Month = Day * 30
	Year  = Day * 365
)

Variables

View Source
var (
	// ErrBadFormat is returned when parsing fails
	ErrBadFormat = errors.New("bad format string")
)

Functions

This section is empty.

Types

type Duration

type Duration struct {
	time.Duration
}

func ParseString

func ParseString(dur string) (*Duration, error)

func (*Duration) Days

func (d *Duration) Days() float64

func (*Duration) HasTimePart

func (d *Duration) HasTimePart() bool

func (*Duration) Hours

func (d *Duration) Hours() float64

func (*Duration) IsWeeksOnly

func (d *Duration) IsWeeksOnly() bool

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() ([]byte, error)

func (*Duration) Minutes

func (d *Duration) Minutes() float64

func (*Duration) Seconds

func (d *Duration) Seconds() float64

func (*Duration) String

func (d *Duration) String() string

String prints out the value passed in. It's not strictly according to the ISO spec, but it's pretty close. In particular, months are not returned. Instead, it returns a value in days (1D ~ 364D) or weeks (1W ~ 52W) whenever possible.

func (*Duration) ToDuration

func (d *Duration) ToDuration() time.Duration

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(data []byte) error

func (*Duration) Weeks

func (d *Duration) Weeks() float64

func (*Duration) Years

func (d *Duration) Years() float64

Jump to

Keyboard shortcuts

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