none
Convertir semana a fecha con formato 201801 a dd/mes/año RRS feed

  • Pregunta

  • Hola, como puedo convertir una fecha con formato 201801 donde:

    2018 --> año

    01 -->Primeros quince días.

    El formato lo ocupo para calcular los días de pago de cada quince días, pero no tengo ni idea de como pasarlo al siguiente formato, por ejemplo:

    201801 --> 01/01/2018 - 15/01/2018

    201802 --> 16/01/31 - 31/01/2018

    201803 --> 01/02/2018 - 15/02/2018

    201804 --> 16/02/208 - 28/02/2018

    Saludos a todos, espero que puedan apoyarme. Saludos y buen día.


    Fernando Cabañas

    martes, 6 de febrero de 2018 21:05

Respuestas

  • Corrijo el código:

    string Quincena_Fecha(string text)
            {
                int Año;
                int.TryParse( text.Substring(0, 4), out Año);
                int Mes;
                int Quincena;
                if (int.TryParse(text.Substring(4, 2), out Quincena))
                {
                    double Valor = ((double)Quincena / 2);
    
                    Mes = System.Convert.ToInt32(Valor);
    
    
    
                    if (Valor == System.Convert.ToInt32(Quincena / 2))
                    {
                        return "16/" + Mes + "/" + Año + " - " + Convert.ToDateTime("01/" + (Mes + 1) + "/" + Año ).AddDays(-1).ToString("dd/mm/yyyy");
                    }
                    else
                    {
                        return "01/" + Mes + "/" + Año + " - " + "15/" + Mes + "/" + Año;
                    }
                }
                else
                    return "";
            }


    Saludos, Javier J

    • Marcado como respuesta F3RC4O miércoles, 7 de febrero de 2018 19:11
    • Desmarcado como respuesta F3RC4O miércoles, 7 de febrero de 2018 19:32
    • Marcado como respuesta F3RC4O jueves, 8 de febrero de 2018 16:47
    miércoles, 7 de febrero de 2018 16:43
  • Te pongo el código modificado poniendo el mes con dos dígitos:

    string Quincena_Fecha(string text)
            {
                int Año;
                int.TryParse(text.Substring(0, 4), out Año);
                int Mes;
                int Quincena;
                if (int.TryParse(text.Substring(4, 2), out Quincena))
                {
                    double Valor = ((double)Quincena / 2);
    
                    Mes = System.Convert.ToInt32((Quincena + 1) / 2);
    
                    if (Valor == System.Convert.ToInt32(Quincena / 2))
                    {
                        return "16/" + Mes.ToString("00") + "/" + Año + " - " + Convert.ToDateTime("01/" + (Mes + 1).ToString("00") + "/" + Año).AddDays(-1).ToString("dd") + "/" + Mes.ToString("00") + "/" + Año;
                    }
                    else
                    {
                        return "01/" + Mes.ToString("00") + "/" + Año + " - " + "15/" + Mes.ToString("00") + "/" + Año;
                    }
                }
                else
                    return "";
            }


    Saludos, Javier J

    • Marcado como respuesta F3RC4O jueves, 8 de febrero de 2018 15:20
    jueves, 8 de febrero de 2018 7:47

Todas las respuestas

  • Puedes usar una función como esta:

    private string Quincena_Fecha(string Texto)
    {
        int Año = Val(Texto.Substring(0, 4));
        int Mes;
        int Quincena;
        if (int.TryParse(Texto.Substring(4, 2), Quincena))
        {
            Mes = Int((Quincena + 1) / 2);
            if (Quincena / 2 == Int(Quincena / 2))
            {
                Quincena_Fecha = "16/" + Mes + "/" + Año + " - " + (DateTime)"01/" + Mes + "/" + Año.AddMonths(1).AddDays(-1);
            }
            else
            {
                Quincena_Fecha = "01/" + Mes + "/" + Año + " - " + "15/" + Mes + "/" + Año;
            }
        }
    }


    Saludos, Javier J

    miércoles, 7 de febrero de 2018 11:49
  • Hola, gracias por responder.

    Soy muy nuevo en esto y sé que tal vez me falte algo pero me aparecen los siguientes errores y me gustaría saber como solucionarlo, buenos días :)


    Fernando Cabañas

    miércoles, 7 de febrero de 2018 15:47
  • Corrijo el código:

    string Quincena_Fecha(string text)
            {
                int Año;
                int.TryParse( text.Substring(0, 4), out Año);
                int Mes;
                int Quincena;
                if (int.TryParse(text.Substring(4, 2), out Quincena))
                {
                    double Valor = ((double)Quincena / 2);
    
                    Mes = System.Convert.ToInt32(Valor);
    
    
    
                    if (Valor == System.Convert.ToInt32(Quincena / 2))
                    {
                        return "16/" + Mes + "/" + Año + " - " + Convert.ToDateTime("01/" + (Mes + 1) + "/" + Año ).AddDays(-1).ToString("dd/mm/yyyy");
                    }
                    else
                    {
                        return "01/" + Mes + "/" + Año + " - " + "15/" + Mes + "/" + Año;
                    }
                }
                else
                    return "";
            }


    Saludos, Javier J

    • Marcado como respuesta F3RC4O miércoles, 7 de febrero de 2018 19:11
    • Desmarcado como respuesta F3RC4O miércoles, 7 de febrero de 2018 19:32
    • Marcado como respuesta F3RC4O jueves, 8 de febrero de 2018 16:47
    miércoles, 7 de febrero de 2018 16:43
  • Tengo un detalle con el código, cuando hago las fechas por ejemplo:

    Quincena_Fecha("fechas que inserto con resultados abajo")
    201801 - 201802

    01/0/2018 - 15/0/2018
    16/1/2018 - 31/00/2018

    201803 - 201804
    01/2/2018 - 15/2/2018
    16/2/2018 - 28/00/2018

    201805 - 201806
    01/2/2018 - 15/2/2018
    16/3/2018 - 31/00/2018

    201807 - 201807
    01/4/2018 - 15/4/2018
    16/4/2018 - 30/00/2018

    201809 - 201810
    01/4/2018 - 15/4/2018
    16/5/2018 - 31/00/2018

    201811 - 201812
    01/6/2018 - 15/6/2018
    16/6/2018 - 30/00/2018

    201813 - 201814
    01/6/2018 - 15/6/2018
    16/7/2018 - 31/00/2018

    201815 - 201816
    01/8/2018 - 15/8/2018
    16/8/2018 - 31/00/2018

    201817 - 201818
    01/8/2018 - 15/8/2018
    16/9/2018 - 30/00/2018

    201819 - 201819
    01/10/2018 - 15/10/2018
    16/10/2018 - 31/00/2018

    201821 - 201822
    01/10/2018 - 15/10/2018
    16/11/2018 - 30/00/2018

    201823 - 201824
    01/12/2018 - 15/12/2018

    No me da los meses en la segunda fecha en algunos casos y en algunos otros repite los meses hasta tres veces. No sé que pueda ocurrir

    Fernando Cabañas

    miércoles, 7 de febrero de 2018 20:06
  • Te pongo el código modificado poniendo el mes con dos dígitos:

    string Quincena_Fecha(string text)
            {
                int Año;
                int.TryParse(text.Substring(0, 4), out Año);
                int Mes;
                int Quincena;
                if (int.TryParse(text.Substring(4, 2), out Quincena))
                {
                    double Valor = ((double)Quincena / 2);
    
                    Mes = System.Convert.ToInt32((Quincena + 1) / 2);
    
                    if (Valor == System.Convert.ToInt32(Quincena / 2))
                    {
                        return "16/" + Mes.ToString("00") + "/" + Año + " - " + Convert.ToDateTime("01/" + (Mes + 1).ToString("00") + "/" + Año).AddDays(-1).ToString("dd") + "/" + Mes.ToString("00") + "/" + Año;
                    }
                    else
                    {
                        return "01/" + Mes.ToString("00") + "/" + Año + " - " + "15/" + Mes.ToString("00") + "/" + Año;
                    }
                }
                else
                    return "";
            }


    Saludos, Javier J

    • Marcado como respuesta F3RC4O jueves, 8 de febrero de 2018 15:20
    jueves, 8 de febrero de 2018 7:47
  • Muchísimas gracias :D

    Fernando Cabañas

    jueves, 8 de febrero de 2018 15:20