none
Desglosar Rango de Fechas con C# RRS feed

  • Pregunta

  • Hola,

    Tengo una consulta, cómo desglosar por fechas, teniendo una fecha_inicio y fecha_fin. 

    Ejemplo

    Fecha_inicio
    18/12/2017

    Fecha_fin 
    22/12/2017

    Y se muestre en Web: 

    • Martes 18 Dic
    • Miercoles 19 Dic
    • Jueves 20 Dic
    • Viernes 21 Dic
    • Sábado 22 Dic


    Espero se me entienda, Gracias

    Gracias 


    viernes, 1 de diciembre de 2017 20:18

Respuestas

  • Primero haz un bucle que recorra desde inicio hasta fin, y dentro del bucle usa el string.Format para que la escriba en el formato deseado.

    DateTime Fecha_inicio = new DateTime(2017,12,18);
    DateTime Fecha_fin = new DateTime(2017,12,22);
    
    for (DateTime fecha = Fecha_Inicio; fecha <= Fecha_Fin; fecha = fecha.AddDays(1))
    {
        string fechaAImprimir = fecha.ToString("dddd d MMM");
        // Escribir fechaAImprimir en la ubicación prevista para ello
    }
    
    viernes, 1 de diciembre de 2017 21:14
    Moderador
  • El objeto 'ViewBag.ContarFecha' contiene la última fecha de la iteración, debes contener los valores de fecha, por ejemplo,  en una lista, de hecho la propia lista podría servir para "comunicar" los datos a la vista, por ejemplo:

    - Método de acción

    public ActionResult Index()
    {
    	var fechaInicio = new DateTime(2017, 12, 18);
    	var fechaFin = new DateTime(2017, 12, 22);
    	var listaFechas = new List<DateTime>();
    	for (DateTime fecha = fechaInicio; fecha <= fechaFin; fecha = fecha.AddDays(1))
    	{
    		listaFechas.Add(fecha);
    	}            
    
    	return View(listaFechas);
    }

    - Vista

    @model List<DateTime>
    
    @foreach (DateTime fecha in Model)
    {
        <p>@fecha.ToString("dddd dd MMM")</p>
    }

    viernes, 1 de diciembre de 2017 22:41
  • En el @foreach estás procesando mal la fecha. El bucle ya separa una ficha individual de la lista, por lo que no debes llamar a .listaFechas al usar esa variable:

        @foreach (var fecha in Model.listaFechas) {
            <button href="#name">
               <span>@fecha.ToString("dddd dd MMM")</span>
            </button>
        }

    Ah, y no concuerda el model, estás tratándolo como si la lista de fechas viniera en el model cuando en realidad no la has metido en el model. Si no quieres modificar tu model, pásala en el ViewBag como ya te sugirieron en una respuesta anterior:

    En el controlador: ViewBag.Lista = listaFechas

    y en la vista: @foreach (var fecha in ViewBag.Lista)



    sábado, 2 de diciembre de 2017 10:44
    Moderador
  • En el @foreach estás procesando mal la fecha. El bucle ya separa una ficha individual de la lista, por lo que no debes llamar a .listaFechas al usar esa variable:

        @foreach (var fecha in Model.listaFechas) {
            <button href="#name">
               <span>@fecha.ToString("dddd dd MMM")</span>
            </button>
        }

    Ah, y no concuerda el model, estás tratándolo como si la lista de fechas viniera en el model cuando en realidad no la has metido en el model. Si no quieres modificar tu model, pásala en el ViewBag como ya te sugirieron en una respuesta anterior:

    En el controlador: ViewBag.Lista = listaFechas

    y en la vista: @foreach (var fecha in ViewBag.Lista)



    Muchas Gracias, se me aclaró lo que tenía que hacer, me ha servido, muy amable 
    domingo, 3 de diciembre de 2017 2:50

Todas las respuestas

  • Primero haz un bucle que recorra desde inicio hasta fin, y dentro del bucle usa el string.Format para que la escriba en el formato deseado.

    DateTime Fecha_inicio = new DateTime(2017,12,18);
    DateTime Fecha_fin = new DateTime(2017,12,22);
    
    for (DateTime fecha = Fecha_Inicio; fecha <= Fecha_Fin; fecha = fecha.AddDays(1))
    {
        string fechaAImprimir = fecha.ToString("dddd d MMM");
        // Escribir fechaAImprimir en la ubicación prevista para ello
    }
    
    viernes, 1 de diciembre de 2017 21:14
    Moderador
  • No sé mucho sobre C#, estoy aprendiendo, pero estoy haciendo esto:

    var ci = new CultureInfo("es-PE");

    for(DateTime fecha = model.DateStart; fecha <= model.DateEnd; fecha = fecha.AddDays(1)) {
        string fechaAImprimir = fecha.ToString("dddd d MMM", ci);
        // Escribir fechaAImprimir en la ubicación prevista para ello
        ViewBag.ContarFecha = fechaAImprimir;
    }

    Ayúdame a resolver esto por favor, al imprimir solo me muestra una fecha, quisiera todas las fechas

    Gracias

    viernes, 1 de diciembre de 2017 21:51
  • El objeto 'ViewBag.ContarFecha' contiene la última fecha de la iteración, debes contener los valores de fecha, por ejemplo,  en una lista, de hecho la propia lista podría servir para "comunicar" los datos a la vista, por ejemplo:

    - Método de acción

    public ActionResult Index()
    {
    	var fechaInicio = new DateTime(2017, 12, 18);
    	var fechaFin = new DateTime(2017, 12, 22);
    	var listaFechas = new List<DateTime>();
    	for (DateTime fecha = fechaInicio; fecha <= fechaFin; fecha = fecha.AddDays(1))
    	{
    		listaFechas.Add(fecha);
    	}            
    
    	return View(listaFechas);
    }

    - Vista

    @model List<DateTime>
    
    @foreach (DateTime fecha in Model)
    {
        <p>@fecha.ToString("dddd dd MMM")</p>
    }

    viernes, 1 de diciembre de 2017 22:41
  • Tengo esto, a ver si así me puedan ayudar, nos sé si estoy haciendo bien, creo que no :P

    Index.cshtml

    @model global::WEB.Models.Host
    
    @{
        ViewData["Title"] = "Web";
    }
    
    <div>
        @foreach (var fecha in Model.listaFechas) {
            <button href="#name">
               <span>@fecha.listaFechas.ToString("dddd dd MMM")</span>
            </button>
        }
    </div>

    Host.cs

    namespace WEB.Models{
    
        public class Host    {
            public DateTime DateStart { get; set; }
            public DateTime DateEnd { get; set; }
        }
    
    }

    HomeController.cs

    using WEB.Models;
    
    namespace WEB.Controllers {
        public class HomeController : Controller {
            public async Task<IActionResult> Index() {
    
                var api = new ApiClient("URL");
                var response = await api.ExecuteGet<Host>("Host", "Id");
                var model = (Host)response.Content;
    
                var ci = new CultureInfo("es-PE");
    
                var listaFechas = new List<DateTime>();
    
                for(DateTime fecha = model.DateStart; fecha <= model.DateEnd; fecha = fecha.AddDays(1)) {
                    string fechaAImprimir = fecha.ToString("dddd d MMM", ci);
                    listaFechas.Add(fecha);
                }
                return View(model);
            }
        }
    }

    Espero me puedan ayudar y solucionar este problema, como les comento no sé mucho sobre esto y quisiera poder desarrollarlo. Muchas Gracias

    sábado, 2 de diciembre de 2017 7:00
  • En el @foreach estás procesando mal la fecha. El bucle ya separa una ficha individual de la lista, por lo que no debes llamar a .listaFechas al usar esa variable:

        @foreach (var fecha in Model.listaFechas) {
            <button href="#name">
               <span>@fecha.ToString("dddd dd MMM")</span>
            </button>
        }

    Ah, y no concuerda el model, estás tratándolo como si la lista de fechas viniera en el model cuando en realidad no la has metido en el model. Si no quieres modificar tu model, pásala en el ViewBag como ya te sugirieron en una respuesta anterior:

    En el controlador: ViewBag.Lista = listaFechas

    y en la vista: @foreach (var fecha in ViewBag.Lista)



    sábado, 2 de diciembre de 2017 10:44
    Moderador
  • En el @foreach estás procesando mal la fecha. El bucle ya separa una ficha individual de la lista, por lo que no debes llamar a .listaFechas al usar esa variable:

        @foreach (var fecha in Model.listaFechas) {
            <button href="#name">
               <span>@fecha.ToString("dddd dd MMM")</span>
            </button>
        }

    Ah, y no concuerda el model, estás tratándolo como si la lista de fechas viniera en el model cuando en realidad no la has metido en el model. Si no quieres modificar tu model, pásala en el ViewBag como ya te sugirieron en una respuesta anterior:

    En el controlador: ViewBag.Lista = listaFechas

    y en la vista: @foreach (var fecha in ViewBag.Lista)



    Muchas Gracias, se me aclaró lo que tenía que hacer, me ha servido, muy amable 
    domingo, 3 de diciembre de 2017 2:50