2016-12-14 111 views
-5

我有它以下列方式,但十二月份选择一个月的时候日期如何获得每个月的最后一天?

if (!Page.IsPostBack) 
     { DateTimeFormatInfo formatoFecha = CultureInfo.CurrentCulture.DateTimeFormat; 
      TextInfo myTI = new CultureInfo("es-MX", false).TextInfo; 
      for (int i = 1; i <= 12; i++) 
      { 
       ddlMesInicial.Items.Add(new ListItem(myTI.ToTitleCase(formatoFecha.GetMonthName(i)), i.ToString())); 
       ddlMesFinal.Items.Add(new ListItem(myTI.ToTitleCase(formatoFecha.GetMonthName(i)), i.ToString())); 
      } 
      ddlMesInicial.SelectedValue = DateTime.Today.Month.ToString("MM"); 
      ddlMesFinal.SelectedValue = DateTime.Today.Month.ToString("MM"); 
      for (int i = 2013; i <= 2020; i++) 
      { 
       ddlAñoInicial.Items.Add(new ListItem(i.ToString(), i.ToString())); 
       ddlAñoFinal.Items.Add(new ListItem(i.ToString()));      
      } 
      ddlAñoInicial.SelectedValue = DateTime.Today.Year.ToString("yyyy"); 
      ddlAñoFinal.SelectedValue = DateTime.Today.Year.ToString("yyyy");     

      FechaEntrega.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Today); 

      SetFechasPeriodo(); 
} 

private void SetFechasPeriodo() 
    { 
     DateTimeFormatInfo formatoFecha = CultureInfo.CurrentCulture.DateTimeFormat; 
     TextInfo myTI = new CultureInfo("es-MX", false).TextInfo; 
DateTime fechaInicial = new DateTime(Convert.ToInt32(ddlAñoInicial.SelectedValue), Convert.ToInt32(ddlMesInicial.SelectedValue), 01); 
     DateTime fechaFinal = new DateTime(Convert.ToInt32(ddlAñoFinal.SelectedValue), Convert.ToInt32(ddlMesFinal.SelectedValue) +1, 01).AddDays(-1); 

     string fdesde = fechaInicial.Day.ToString() + " de " + myTI.ToTitleCase(formatoFecha.GetMonthName(fechaInicial.Month)) + " de " + fechaInicial.Year.ToString(); 
     string fhasta = fechaFinal.Day.ToString() + " de " + myTI.ToTitleCase(formatoFecha.GetMonthName(fechaFinal.Month)) + " de " + fechaFinal.Year.ToString(); 

     lbFechasPeriodo.Text = "Periodo del " + fdesde + " al " + fhasta; 
} 

十二月标记错误的格拉西亚斯

+1

有什么错误? –

+2

[DaysInMonth函数](https://msdn.microsoft.com/en-us/library/system.datetime.daysinmonth.aspx) – MethodMan

+4

可能出现[如何查找每月的最后一天?](http: //stackoverflow.com/questions/4078954/how-do-you-find-the-last-day-of-the-month) – MethodMan

回答

0

如果我理解正确,这并不把它给我,你实际上正在做的是采取这个月,加1,所以它实际上是下个月。然后你从中减去一天,所以这是上个月的最后一天。只是给它一个实际的日期而不是做一个完整的方法会更好。

更换

DateTime fechaFinal = new DateTime(Convert.ToInt32(ddlAñoFinal.SelectedValue), 
            Convert.ToInt32(ddlMesFinal.SelectedValue) +1, 
            01).AddDays(-1); 

int añoFinal = Convert.ToInt32(ddlAñoFinal.SelectedValue); 
int mesFinal = Convert.ToInt32(ddlMesFinal.SelectedValue); 
int díaFinal = DateTime.DaysInMonth(añoFinal, mesFinal); 
DateTime fechaFinal = new DateTime(añoFinal, mesFinal, díaFinal); 
+0

感谢您的回应布莱克,作出改变,看看它的工作。 问候。 – Molitaa

+0

@Molitaa是我的建议,能够解决您的问题? –

+0

是的,非常感谢您的帮助。 祝你有个愉快的下午 问候。 – Molitaa

相关问题