// --------------------------------------------------------------------------------------------
// archivo  : xstime.h
// objetivo : header de funciones para manejo de cadenas
// --------------------------------------------------------------------------------------------

#ifndef __xsTime_H__
#define __xsTime_H__

// Incluyo la librería xsEasy
#include "xsEasyC.h"

// Se Incluyen librerías de c
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#include "time.h"
#include <stdbool.h>


// Constantes
#define SEGUNDOS  0
#define MINUTOS   1
#define HORAS     2
#define DIAS      3
#define MESES     4
#define ANIOS     5

#define CON_SEGUNDOS VERDAD
#define SIN_SEGUNDOS FALSO

#define FTO_12_HRS 0
#define FTO_24_HRS 1

#define FECHADDMMYYYY  0
#define FECHAMMDDYYYY  1
#define FECHADDMMMYYYY 2
#define FECHAMMMDDYYYY 3

// Estructura para la fecha
DefineTipo Estructura 
{
	// Definición del Tiempo
	Entero  segundos;     // 0-59
	Entero  minutos;      // 0-59
	Entero  horas;        // 0-23
	Entero  dia;          // 1-31
	Entero  mes;          // 0-11
	Entero  anio;         // Desde 1900
	Entero  diaSemana;    // 0-6    Domingo es 0
	Entero  diaAnio;      // 0-365  Desde el 1o de Enero
	Logico  horarioVerano;
}FechaHora;


// Objetivo: Retornar la Fecha en Cadena
// Retorna : La fecha en Cadena
Caracter* fechaCadena(FechaHora fechaHora, // La Fecha Hora
		 			  Entero    formato);  // Formato


// Objetivo: Obtener la Fecha Hora en cadena
// Retorna : La fecha Hora en Cadena
//           En el parametro; la fecha es colocada en segundos,minutos, horas, dias, meses y año
Caracter* fechaHoraCadena(FechaHora fechaHora);

// Objetivo: Compara 2 fechaHora
// Retorna : 0 si son iguales; 1 si la primera es posterior; 2 si la segunda es posterior
//           En el parametro; la fecha es colocada en segundos,minutos, horas, dias, meses y año
//           En caso de error -1 si fue al crear el tiempo para la fechaHora1
//           En caso de error -2 si fue al crear el tiempo para la fechaHora2
Entero fechaHoraComparar(FechaHora fechaHora1, FechaHora fechaHora2);
					  

// Objetivo: Crear una Fecha a partir de la Variable FechaHoraLocal del parámetro
// Retorna : VERDAD / FALSO
//           En el parametro; la fecha es colocada en segundos,minutos, horas, dias, meses y año
Logico fechaHoraCrear(FechaHora* fechaHora);


// Objetivo: Obtener la Fecha Hora Local del Sistema
// Retorna : VERDAD / FALSO
//           En el parametro; la fecha es colocada en segundos,minutos, horas, dias, meses y año
Logico fechaHoraObtener(FechaHora* fechaHora);

// Objetivo: Sumar a una Fecha Hora Local del Sistema.
//           Se pueden sumar segundos, minutos, horas, dias, meses y anios
// Retorna : VERDAD / FALSO
//           En el parametro; la fecha es colocada en segundos,minutos, horas, dias, meses y año
Logico fechaHoraSumar(FechaHora* fechaHora,
                      Entero valorSuma,   // El valor que se a sumar
				      Entero tipoTiempo);   // El tipo de valor que se suma: min, seg, etc.


// Objetivo: Validar que una fecha sea correcta
// Retorna : VERDAD/FALSO
Logico fechaHoraValidar(FechaHora fechaHora);
					 
// Objetivo: Devolver la hora en Cadena
// Retorna : La hora en Cadena
Caracter* horaCadena(FechaHora fechaHora, // La Fecha Hora
                     Logico    segundos,  // Para indicar si muestra los segundos
			 		 Entero    formato);  // Formato 12 o 24 hrs
					
					

#endif