fecha

package module
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: GPL-3.0 Imports: 8 Imported by: 0

README

fecha

Este package permite trabajar con fechas y períodos mensuales. Desarrolado para uso propio. Incluye métodos para serialización binaria utilizada por package pgx.


    _, _ := fecha.NewFechaFromString("2020-08-23")
    _ := fecha.NewFechaFromInts(2020, 8, 23)
    _ := fecha.NewFechaFromLayout("02/01/2006", "23/08/2020")
    _ := fecha.NewFechaFromTime(time.Now())

Utiliza con un int como tipo subyacente, por lo que las comparaciones son fáciles:

    f1, _ := fecha.NewFechaFromString("2020-08-23")
    f1, _ := fecha.NewFechaFromString("2020-08-24")

    _ := f1 > f0 // true
    _ := f1 == f2 // false

    f3, _ := fecha.NewFechaFromString("2020-08-23")
    _ := f1 == f3 // true

Operaciones con fechas:


f, _ = fecha.NewFechaFromInts(2020, 8, 21)
_ = f.AgregarDias(5)  // 2020-08-26
_ = f.AgregarDiasHabiles(5) // 2020-08-28

// Diferencia dias
f0 := fecha.Fecha(20190823)
dias := fecha.Diff(f0, f1)   // 366

Documentation

Overview

Package fecha está pensado para simplificar el trabajo con fechas. Trabaja con un int subyacente, por lo que las comparaciones son fáciles. Además incluye las funciones de Marshal y Unmarshal para MongoDB, SQL y JSON.

Index

Constants

View Source
const AñoMaximo = 2200

AñoMaximo determina que si se ingresa una fecha con año posterior, el período será considerado inválido.

View Source
const AñoMinimo = 1900

AñoMinimo determina que si se ingresa una fecha con año menor, el período será considerado inválido.

View Source
const MesPrimero = true

MesPrimero true: 03/2020. Si es false se muestra 2020/03

View Source
const SeparadorMes = "/"

SeparadorMes es el caracter utilizado para separar el mes de año al mostrarlo como string

Variables

View Source
var NilMes = Mes{}

Functions

func Diff added in v0.7.0

func Diff(f1, f2 Fecha) (dias int)

Diff calcula la diferencia de días entre dos fechas.Diff Si la segunda fecha es anterior a la primera, devuelve los días en negativo.

Types

type Agrupacion

type Agrupacion string

Agrupacion dice el intervalo que se desea para una TimeSeries

const (
	// AgrupacionMensual devolverá el primer día de cada mes
	AgrupacionMensual Agrupacion = "Mensual"
	// AgrupacionSemanal devolverá las semanas agrupando el lunes como primer día
	AgrupacionSemanal = "Semanal"
)

type Fecha

type Fecha int

Fecha permite utilizar time.Time ignorando horas y zonas horarias. Se entiende que todas las fechas están guardadas en UTC.

func NewFecha

func NewFecha(texto string) (fch Fecha, err error)

NewFecha parsea un texto con formato JSON.

func NewFechaFromInts added in v0.7.0

func NewFechaFromInts(año, mes, dia int) (fch Fecha)

NewFechaFromInts le corta la hora y devuelve la fecha.

func NewFechaFromLayout

func NewFechaFromLayout(layout, texto string) (fch Fecha, err error)

NewFechaFromLayout parsea el texto ingresado, utilizando el layout especificado.

func NewFechaFromTime

func NewFechaFromTime(t time.Time) (fch Fecha)

NewFechaFromTime le corta la hora y devuelve la fecha.

func TimeSeries

func TimeSeries(desde, hasta Fecha, agrupacion Agrupacion) (fechas []Fecha, err error)

TimeSeries devuelve todos los intervalos de fechas entre las dos fechas especificadas. Por ejemplo: entre 01/05/2017 y 04/01/2018 = [01/05/2017, 01/06/2017, 01/08/2018, 01/09/2018...]

func (Fecha) AgregarAños

func (f Fecha) AgregarAños(cantidad int) (nuevaFecha Fecha)

AgregarAños devuelve una nueva fecha con los añós agregados

func (Fecha) AgregarDias

func (f Fecha) AgregarDias(dias int) (NuevaFecha Fecha)

AgregarDias devuelve una nueva fecha con la cantidad de días agregados Si el signo es negativo los resta.

func (Fecha) AgregarDiasHabiles

func (f Fecha) AgregarDiasHabiles(cantidad int) (nuevaFecha Fecha)

AgregarDiasHabiles suma la cantidad de días especificados en el argumento. Considera los sábados y domingos (no tiene en cuenta feriados)

func (Fecha) AgregarMeses

func (f Fecha) AgregarMeses(cantidad int) (nuevaFecha Fecha)

AgregarMeses suma la cantidad de meses deseados. El día siempre queda igual salvo que el mes destino tenga menos días. Por ejemplo, sumar 1 mes al 31/01/2017 resulta en 28/02/2017

func (*Fecha) AssignTo added in v0.7.0

func (t *Fecha) AssignTo(dst interface{}) error

func (Fecha) Año

func (f Fecha) Año() int

Año devuelve el año en formato 2006

func (*Fecha) DecodeBinary added in v0.7.0

func (t *Fecha) DecodeBinary(ci *pgtype.ConnInfo, src []byte) error

func (*Fecha) DecodeText added in v0.7.0

func (t *Fecha) DecodeText(ci *pgtype.ConnInfo, src []byte) error

func (Fecha) Dia

func (f Fecha) Dia() int

Dia devuelve el número del día

func (Fecha) DiaDeLaSemana

func (f Fecha) DiaDeLaSemana() string

DiaDeLaSemana devuelve la fecha del día para suegerirla en el index

func (Fecha) EncodeBinary added in v0.7.0

func (src Fecha) EncodeBinary(ci *pgtype.ConnInfo, buf []byte) ([]byte, error)

func (*Fecha) EncodeText added in v0.7.0

func (src *Fecha) EncodeText(ci *pgtype.ConnInfo, buf []byte) ([]byte, error)

func (*Fecha) Get added in v0.7.0

func (t *Fecha) Get() interface{}

func (Fecha) IsValid

func (f Fecha) IsValid() bool

IsValid devuelve true si es una fecha válida.

func (Fecha) IsZero

func (f Fecha) IsZero() bool

IsZero devuelve true si la fecha es el número 0.

func (*Fecha) JSONString

func (f *Fecha) JSONString() string

JSONString devuelve el la fecha en forato 2016-02-19

func (Fecha) MarshalJSON

func (f Fecha) MarshalJSON() (by []byte, err error)

MarshalJSON es para tomar un string y pasarlo a una fecha.Fecha

func (Fecha) Menos

func (f Fecha) Menos(f2 Fecha) (dias int)

Menos devuelve la cantidad de días de diferencia entre dos fechas Se entiende que f2 es la fecha posterior.

func (Fecha) Mes

func (f Fecha) Mes() int

Mes devuelve el número del mes.

func (*Fecha) NewTypeValue added in v0.7.0

func (t *Fecha) NewTypeValue() pgtype.Value

func (Fecha) PeriodoMes added in v0.7.0

func (f Fecha) PeriodoMes() Mes

PeriodoMes devuelve la struct Mes correspondiente a la fecha. Se supone que se está trabajando con una fecha válida.

func (*Fecha) Scan

func (f *Fecha) Scan(value interface{}) error

Scan satisface la interface de package sql. En la base de datos la guarda como el tipo DATE que es un int64

func (*Fecha) Set added in v0.7.0

func (t *Fecha) Set(src interface{}) error

func (Fecha) String

func (f Fecha) String() string

func (Fecha) Time

func (f Fecha) Time() (nuevaFecha time.Time)

Time devuele la representación con el tipo time.Time

func (Fecha) TypeName added in v0.7.0

func (Fecha) TypeName() string

TypeName returns the PostgreSQL name of this type.

func (*Fecha) UnmarshalJSON

func (f *Fecha) UnmarshalJSON(input []byte) error

UnmarshalJSON Es para pasar un Fecha => JSON

func (Fecha) Value

func (f Fecha) Value() (driver.Value, error)

Value satisface la interface de package sql. En la base de datos la guarda como el tipo DATE que es un int64

type Mes added in v0.7.0

type Mes struct {
	// contains filtered or unexported fields
}

Mes es una estructura para representar un mes calendario de un año particular.Mes Reduce la ambiguedad ya que no es necesario ingresar un día.

Se usaron variables locales para evitar tener una fecha en un estado inválido.

En JSON se marshaliza con el formato "2020-08" En la base de datos se persiste como un DATE

func NewMes added in v0.8.0

func NewMes(año, mes int) (Mes, error)

func NewMesFromJSON added in v0.8.0

func NewMesFromJSON(str string) (out Mes, err error)

func NewMesMust added in v0.8.0

func NewMesMust(año, mes int) Mes

func (Mes) Anterior added in v0.8.0

func (m Mes) Anterior(f2 Mes) bool

func (Mes) AnteriorOIgual added in v0.8.0

func (m Mes) AnteriorOIgual(f2 Mes) bool

func (*Mes) AssignTo added in v0.8.0

func (t *Mes) AssignTo(dst interface{}) error

func (Mes) Año added in v0.7.0

func (m Mes) Año() int

Año devuelve el número del año.

func (*Mes) DecodeBinary added in v0.8.0

func (t *Mes) DecodeBinary(ci *pgtype.ConnInfo, src []byte) error

func (Mes) EncodeBinary added in v0.8.0

func (src Mes) EncodeBinary(ci *pgtype.ConnInfo, buf []byte) ([]byte, error)

func (*Mes) Get added in v0.8.0

func (t *Mes) Get() interface{}

func (Mes) JSONString added in v0.7.0

func (m Mes) JSONString() string

JSONString devuelve la representación que se utiliza en JSON. Si es cero devuelve null Si no es válida devuelve "N/D"

func (Mes) MarshalJSON added in v0.7.0

func (m Mes) MarshalJSON() (by []byte, err error)

MarshalJSON es para tomar una una struct a un string JSON.

func (Mes) MesDelAño added in v0.7.0

func (m Mes) MesDelAño() int

MesDelAño devuelve el número de mes.

func (*Mes) NewTypeValue added in v0.8.0

func (t *Mes) NewTypeValue() pgtype.Value

func (Mes) Posterior added in v0.8.0

func (m Mes) Posterior(f2 Mes) bool

func (Mes) PosteriorOIgual added in v0.8.0

func (m Mes) PosteriorOIgual(f2 Mes) bool

func (Mes) PrimerDia added in v0.7.0

func (m Mes) PrimerDia() Fecha

PrimerDia devuelve la fecha considerando el primer día del período.

func (*Mes) Scan added in v0.7.0

func (m *Mes) Scan(value interface{}) error

Scan satisface la interface de package sql. Si el valor que estaba persistido es menor al mínimo o mayor al máximo, no va a dar a error. Queda a criterio del usuario analizarla con el método Valid(). Si el va

func (*Mes) Set added in v0.8.0

func (t *Mes) Set(src interface{}) error

func (Mes) String added in v0.7.0

func (m Mes) String() (out string)

func (Mes) SumarMeses added in v0.7.0

func (m Mes) SumarMeses(meses int) (out Mes)

SumarMeses devuelve una nueva fecha con los meses agregados. Si se quiere restar, ingresar meses en negativo. Se supone que se está trabajando con un Mes válido no cero.

func (Mes) TypeName added in v0.8.0

func (Mes) TypeName() string

TypeName returns the PostgreSQL name of this type.

func (Mes) UltimoDia added in v0.7.0

func (m Mes) UltimoDia() Fecha

UltimoDia devuelve la fecha considerando el último día del período.

func (*Mes) UnmarshalJSON added in v0.7.0

func (m *Mes) UnmarshalJSON(input []byte) (err error)

UnmarshalJSON es para parsear el string a una struct Mes. Si llega una cadena null o vacía, se crea una struct con valor cero.

func (Mes) Valid added in v0.7.0

func (m Mes) Valid() bool

Valid devuelve true si la fecha es válida

func (Mes) Value added in v0.7.0

func (m Mes) Value() (driver.Value, error)

Value satisface la interface de package sql. En la base de datos la guarda como el tipo DATE. Si se intenta persistir una fecha Zero() => La guarda como null. Si se intenta persistir una fecha !Valid() => devuelve error.

func (Mes) Zero added in v0.7.0

func (m Mes) Zero() bool

Zero devuelve true si el día y el año son cero

type Time added in v0.7.0

type Time interface {
	Time() time.Time
}

Jump to

Keyboard shortcuts

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