<?php

class Date
{
    /**
     * Método para converter data e hora.
     *
     * @param  string  $data
     * @param  bool $exibeHora
     * @param  bool $segundos
     * @param  string  $separador
     * @param  string  $formatoSaida
     * @return string
     */
    public static function ajustarDataHora($data = '', $exibeHora = false, $segundos = false, $separador = '/', $formatoSaida = 'BR')
    {
        $hora = '';

        if ($exibeHora && false !== stripos($data, ':')) {
            $hora = ' - ';
            $hora .= ($segundos) ? substr($data, 11, 8) : substr($data, 11, 5);
        }

        $formatoAtual = is_numeric(substr($data, 0, 4)) ? 'EN' : 'BR';

        if ($formatoAtual == 'EN') {
            $ano = substr($data, 0, 4);
            $mes = substr($data, 5, 2);
            $dia = substr($data, 8, 2);
        } else {
            $ano = substr($data, 6, 4);
            $mes = substr($data, 3, 2);
            $dia = substr($data, 0, 2);
        }

        if ($formatoSaida == 'EN') {
            $retorno = $ano . $separador . $mes . $separador . $dia . $hora;
        } else {
            $retorno = $dia . $separador . $mes . $separador . $ano . $hora;
        }

        return $retorno;
    }

    /**
     * Retorna o mes por extenso.
     *
     * @param  int $mes
     * @return string
     */
    public static function mesExtenso($mes = 0)
    {
        $arrayMes = array(
            'Janeiro',
            'Fevereiro',
            'Março',
            'Abril',
            'Maio',
            'Junho',
            'Julho',
            'Agosto',
            'Setembro',
            'Outubro',
            'Novembro',
            'Dezembro',
        );

        return $arrayMes[$mes - 1];
    }

    /**
     * Calcula diferença entre datas em segundos.
     *
     * @param  string $dataIni
     * @param  string $dataFim
     * @return string
     */
    public static function diffDataHora($dataIni, $dataFim)
    {
        list($anomenor, $mesmenor, $diamenor, $horamenor, $minutomenor, $segundomenor) = split('[-: ]', $dataIni);
        list($anomaior, $mesmaior, $diamaior, $horamaior, $minutomaior, $segundomaior) = split('[-: ]', $dataFim);

        $segundos = mktime($horamaior, $minutomaior, $segundomaior, $mesmaior, $diamaior, $anomaior) -
                    mktime($horamenor, $minutomenor, $segundomenor, $mesmenor, $diamenor, $anomenor);

        return $segundos;
    }
}
