Datas em C++

Padrão

Olá pessoal!

Vasculhando minhas coisas, achei aqui uma classe bem simples em C++ para trabalhar com datas. Está bem “rústico”, já que quando eu fiz (uns 2 anos atrás), não tinha muita noção sobre boas práticas de programação. Mas, de qualquer forma, já serve para dar uma ajuda em projetos pequenos. Ah, os métodos são todos estáticos, de forma que você não precisa instanciar a classe para utilizá-los 😉


utilitarios.h

#ifndef _UTILITARIOS_H_
#define _UTILITARIOS_H_

#include <string>

class Utilitarios {
public:
	static std::string obterHoraAtual24H(void);

	static std::string obterHoraAtual24HcomSeg(void);

	static std::string obterHoraAtual12H(void);

	static std::string obterHoraAtual12HcomSeg(void);

	static std::string obterDataNumerica(void);

	static std::string obterDataNumericaAnoResumido(void);

	static std::string obterDataPorExtenso(void);
};

#endif

utilitarios.cpp

#include "utilitarios.h"

#include <string>
#include <iostream>
#include <fstream>

#include <cstring>
#include <cstdlib>
#include <ctime>

std::string Utilitarios::obterHoraAtual24H(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%H:%M", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterHoraAtual24HcomSeg(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%H:%M:%S", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterHoraAtual12H(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%I:%M %p", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterHoraAtual12HcomSeg(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%I:%M:%S %p", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterDataNumerica(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%d/%m/%Y", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterDataNumericaAnoResumido(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[20];

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 20, "%d/%m/%y", timeinfo);

	return std::string(buffer);
}

std::string Utilitarios::obterDataPorExtenso(void) {

	time_t rawtime;
	struct tm *timeinfo;
	char buffer[40];
	std::string data;

	time(&rawtime);
	timeinfo = localtime(&rawtime);

	strftime(buffer, 40, "%d", timeinfo);
	data = buffer;

	data += " de ";

	strftime(buffer, 40, "%m", timeinfo);
	if (strcmp(buffer, "01") == 0) {
		data += "janeiro de ";
	} else if (strcmp(buffer, "02") == 0) {
		data += "fevereiro de ";
	} else if (strcmp(buffer, "03") == 0) {
		data += "março de ";
	} else if (strcmp(buffer, "04") == 0) {
		data += "abril de ";
	} else if (strcmp(buffer, "05") == 0) {
		data += "maio de ";
	} else if (strcmp(buffer, "06") == 0) {
		data += "junho de ";
	} else if (strcmp(buffer, "07") == 0) {
		data += "julho de ";
	} else if (strcmp(buffer, "08") == 0) {
		data += "agosto de ";
	} else if (strcmp(buffer, "09") == 0) {
		data += "setembro de ";
	} else if (strcmp(buffer, "10") == 0) {
		data += "outubro de ";
	} else if (strcmp(buffer, "11") == 0) {
		data += "novembro de ";
	} else if (strcmp(buffer, "12") == 0) {
		data += "dezembro de ";
	}

	strftime(buffer, 40, "%Y", timeinfo);
	data += buffer;

	return data;
}