2016-12-14 96 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

相關問題