// 
// Copyright 2016 Agencia Estatal de Administración Tibutaria
//
// Licencia con arreglo a la EUPL, Versión 1.1 o -en cuanto
// sean aprobadas por la Comisión Europea- versiones
// posteriores de la EUPL (la «Licencia»);
// Solo podrá usarse esta obra si se respeta la Licencia.
// Puede obtenerse una copia de la Licencia en:
//  
// https://joinup.ec.europa.eu/software/page/eupl
//  
// Salvo cuando lo exija la legislación aplicable o se acuerde
// por escrito, el programa distribuido con arreglo a la
// Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
// DE NINGÚN TIPO, ni expresasni implícitas.
//
// Véase la Licencia en el idioma concreto que rige los permisos y 
// limitaciones que establece la Licencia.
// 

using System;
using System.Collections.Generic;
using System.Text;

namespace ateneo.utiles
{
    class Fecha
    {
        public static DateTime fechaVacia = new DateTime(1970, 1, 1, 1, 0, 0);

        public static DateTime ahora() {
            return DateTime.Now;
        }

        public static DateTime ahoraRestada(long tiempo) {
            return DateTime.Now.AddMilliseconds(-tiempo);
        }

        public static string formatoHoraHM(DateTime d) {
            return d.ToString("HH:mm");
        }

        public static string formatoHoraHMS(DateTime d) {
            return d.ToString("HH:mm:ss");
        }

        public static string formatoFechaCorta(DateTime d) {
            return d.ToString("dd/MM/yyyy");
        }

        public static string formatoFechaSQL(DateTime d) {
            return "'" + d.ToString("yyyyMMdd HH:mm:ss") + "'";
        }

        public static string formatoFechaSQLCorto(DateTime d) {
            return "'" + d.ToString("yyyyMMdd") + "'";
        }

        public static string javaTimeStamp(DateTime d) {
            return d.ToString("yyyy-MM-dd HH:mm:ss");
        }

        public static DateTime parseFecha(string fechaTxt) {
            try {
                return DateTime.Parse(fechaTxt);
            } catch (Exception) {
                return fechaVacia;
            }
        }

        public static DateTime convertirHora(string hora) {
            try {
                return DateTime.Parse(hora);
            } catch (Exception) {
                return fechaVacia; ;
            }
        }

        public static DateTime ajusteAleatorioHora(DateTime hora, int minutos) {
            Random random = new Random(Environment.TickCount);
            int segundos = random.Next(minutos * 120);
            segundos -= (minutos * 60);
            return DateTime.Now.AddSeconds(segundos);
        }

        internal static string formatoHoraDMA(DateTime fecha) {
            return fecha.ToString("dd/MM/yyyy");
        }

        internal static string BlancoSiCero(string strHora) {
            if (strHora == "01:00") return "";
            return strHora;
        }
    }
}
