Esta biblioteca permite validar fechas con un determinado formato.
-
Si usas cl.exe (de Visual Studio) como compilador de C/C++, debes agregar lo siguiente:
-
La biblioteca estática llamada libfdate.lib la debes añadir en la carpeta
lib
y se lo encuentra en la siguiente ruta:C:\Program Files\Microsoft Visual Studio 12.0\VC\lib
Para evitar esta posible advertencia del enlazador:
warning LNK4099: PDB 'libfdate.pdb' was not found with 'libfdate.pdb.lib' or at 'libfdate.pdb'; linking object as if no debug info
Agrega el archivo
libfdate.pdb
en la misma carpeta donde metaslibfdate.lib
.Luego de añadir la biblioteca y el archivo .PDB, abrimos el Visual Studio y nos vamos a la sección de Proyecto -> Propiedades de configuración -> Vinculador -> Entrada -> Dependencias adicionales (en esta opción agregas el nombre de la biblioteca estática con su respectiva extensión .lib) .
-
El archivo de cabecera llamado fdate.h la debes añadir en la carpeta
include
y se lo encuentra en la siguiente ruta:C:\Program Files\Microsoft Visual Studio 12.0\VC\include
-
Cuando hayas hecho los dos pasos anteriores, procedes a incluir el archivo fdate.h en el archivo de origen (donde está el main):
#include <fdate.h>
-
Si usas Dev-C++ como IDE(Entorno de desarrollo integrado) para compilar códigos de C/C++, debes agregar lo siguiente:
-
La biblioteca estática llamada libfdate.a la debes añadir en la carpeta
lib
y se lo encuentra en la siguiente ruta:C:\Program Files\Dev-Cpp\lib
Luego de añadir la biblioteca, abrimos el Dev-C++ y nos vamos a la sección de Proyecto -> Opciones del proyecto -> Parámetros -> Linker (en esta opción agregas el siguiente comando: -lfdate) .
-
El archivo de cabecera llamado fdate.h la debes añadir en la carpeta
include
y se lo encuentra en la siguiente ruta:C:\Program Files\Dev-Cpp\include
-
La biblioteca y el archivo de cabecera lo debes descargar aquí: Library-FormatDate
int GetWeekday(const Date* const date);
Calcula el día de la semana con el siguiente algoritmo.
Parámetros:
const Date* const date
: Este puntero recibe la dirección base de una variable de estructura de tipo Date.
Valor de retorno:
Devuelve un valor que esté en el rango de 0 a 6, que básicamente representa el código de la semana. Si llega a ocurrir un error en la ejecución, retorna -1. La función envía un mensaje de error por defecto.
Ejemplo:
#include <stdio.h>
#include <fdate.h>
int main(void)
{
Date date = {23, 02, 2008};
int codeWeekday = GetWeekday(&date);
if (codeWeekday != -1)
printf("Code WeekDay: %d\n", codeWeekday);
return 0;
}
uint8_t Tryparse(const char* const format, const char* const buf, Date* const date);
Valida la fecha con un formato.
Parámetros:
const char* const format
: Este puntero recibe la dirección base del formato especificado.
Los formatos válidos son:
- yyyy/mm/dd
- yyyy-mm-dd
- dd/mm/yyyy
- dd-mm-yyyy
- yyyy.mm.dd
- dd.mm.yyyy
const char* const buf
: Este puntero recibe la dirección base de un búfer (básicamente ahí es donde está la fecha a validar).
Date* const date)
: Este puntero recibe la dirección base de una variable de estructura de tipo Date.
Valor de retorno:
Retorna 0 si la función no encontró ningún error en la fecha, de lo contrario, devuelve 1. La función envía un mensaje de error por defecto.
Ejemplo:
#include <stdio.h>
#include <fdate.h>
int main(void)
{
Date date;
const char* stringDate = "20/05/2098";
if (Tryparse("yyyy/mm/dd", stringDate, &date) != 1) //La función dará true, no se cumplió con el formato.
printf("%d %d %d", date.year, date.month, date.day);
return 0;
}
const char* GetNameWeekday(uint8_t code, uint8_t language);
Obtiene el nombre del día de la semana, ya sea en español o inglés.
Parámetros:
uint8_t code
: Este parámetro recibe el código de la semana.
ùint8_t language
: Este parámetro recibe la id del lenguaje. 0 si es español, 1 si es en inglés.
Valor de retorno:
Retorna el nombre del día de la semana (Lunes, martes, ...).
Ejemplo:
#include <stdio.h>
#include <fdate.h>
int main(void)
{
printf("%s, %s\n", GetNameWeekday(0, ES), GetNameWeekday(0, EN));
//Resultado en pantalla: Lunes, Monday
return 0;
}
const char* GetNameMonth(uint8_t codeMonth, uint8_t language);
Obtiene el nombre del mes, ya sea en español o inglés.
Parámetros:
uint8_t codeMonth
: Este parámetro recibe el código del mes (1-12).
uint8_t language
: Este parámetro recibe la id del lenguaje. 0 si es español, 1 si es en inglés.
Valor de retorno:
Retorna el nombre del mes (Enero, febrero, ...).
Ejemplo:
#include <stdio.h>
#include <fdate.h>
int main(void)
{
printf("%s, %s\n", GetNameMonth(1, ES), GetNameMonth(1, EN));
//Resultado en pantalla: Enero, January
return 0;
}
En el siguiente ejemplo, se le pide al usuario que ingrese su fecha de nacimiento para poder calcular su determinada edad.
#include <stdio.h>
#include <pscanf.h> /* www.github.com/MrDave1999/pscanf.h */
#include <fdate.h>
#include <time.h>
int main()
{
Date date;
string dateStr = { NULL };
int yearCurrent;
time_t t;
struct tm *tm;
t = time(NULL);
tm = localtime(&t);
yearCurrent = 1900 + tm->tm_year;
do
{
strread(&dateStr, "Ingrese su fecha de nacimiento (Formato: yyyy/mm/dd) \n");
} while (Tryparse("yyyy/dd/mm", dateStr.s, &date));
printf("Tu Edad es de: %d anios\n", yearCurrent - date.year);
pause();
}