c# - materializecss - pickadate range
En ASP.NET, ¿cómo puedo forzar el formato de fechas en una DropDownList a "DD/MM/YYYY"? (7)
Añada manualmente los elementos a la colección DropDownList.Items en lugar de confiar en DataBind ():
DateTime date = DateTime.Now;
for (int i = 0; i < HISTORY_LENGTH; i++)
{
DropDownList.Items.Add(new ListItem(date.AddDays(-i).ToString("dd/MM/yyyy"), date.AddDays(-i)))
}
Tengo que crear una DropDownList con las fechas de los últimos 7 días. Me gustaría que DropDownList muestre la fecha como "DD / MM / YYYY". Así que creé una lista de fechas:
DateTime date = DateTime.Now;
List<DateTime> dates = new List<DateTime>();
for (int i = 0; i < HISTORY_LENGTH; i++)
{
dates.Add(date.AddDays(-i));
}
DropDownList.DataSource = dates;
DropDownList.DataBind();
Agrego mis fechas como DateTime, no como cadenas. Creo que es el método ToString () de mi objeto DateTime que se llama para crear texto que está visible en mi DropDownList. Por defecto es la fecha y la hora. El resultado es:
[0]: {16/07/2008 11:08:27}
[1]: {15/07/2008 11:08:27}
[2]: {14/07/2008 11:08:27}
[3]: {13/07/2008 11:08:27}
[4]: {12/07/2008 11:08:27}
[5]: {11/07/2008 11:08:27}
[6]: {10/07/2008 11:08:27}
¿Cómo puedo forzar el formato a "DD / MM / YYYY"?
En lugar de formatear el origen de datos, también puede establecer el formato de la fecha como:
DropDownList.DataTextFormatString = "{0:dd/MM/yyyy}";
Me gustaría envolver el DateTime en otro objeto y anular ToString () ya que es lo que muestra la lista desplegable.
class MyDateTime {
public MyDateTime(DateTime dt) {
_dt = dt;
}
public override String ToString() {
return _dt.ToString("dd/MM/yyyy");
}
private DateTime _dt;
}
La principal ventaja de hacerlo es que puede almacenar otra información además de una cadena para hacer referencia a otros objetos o datos. Si solo una cadena simple es suficiente, es excesiva.
Si tener un ''/'' es importante para ti en todas las configuraciones regionales (idiomas), entonces tienes que ponerle la palabra arriba, de lo contrario podrías terminar con otro personaje en algunos lugares.
Consulte http://www.color-of-code.de/index.php?option=com_content&view=article&id=58:c-format-strings&catid=38:programming&Itemid=66 para ver algunos ejemplos (mi lista de trampas con errores me topé con )
El código tiene que ser modificado un poco:
DateTime date = DateTime.Now;
List<MyDateTime> dates = new List<MyDateTime>();
for (int i = 0; i < HISTORY_LENGTH; i++)
{
dates.Add(new MyDateTime(date.AddDays(-i)));
}
DropDownList.DataSource = dates;
DropDownList.DataBind();
Si esto es algo que tienes que hacer en toda la aplicación, debes mirar el objeto CultureInfo.
Obtiene el objeto CultureInfo actual llamando
var culture = CultureInfo.CurrentCulture;
El objeto CultureInfo
tiene una propiedad llamada DateTimeFormat
que a su vez tiene una propiedad llamada ShortDatePattern
que debe establecer como ...
culture.DateTimeFormatInfo.ShortDatePattern = "dd/MM/yyyy";
Ahora puede usar eso en cualquier lugar formateando la cadena como tal ...
String.Format("{d}", someDateTime);
Todo lo que necesita hacer es establecer DropDownList.DataTextFormatString
; luego, al DataBinding, su control aplicará el formato correcto:
<asp:DropDownList
id="yourList"
runat="server"
dataTextFormatString="{0:dd/MM/yyyy}"/>
Formatee las fechas de la lista de esa manera antes de vincular los datos al control.
List<string> dates = new List<string>(HISTORY_LENGTH - 1);
for (int i = 0; i < HISTORY_LENGTH; i++)
{
dates.Add(DateTime.Today.ToString("dd/MM/yyyy"));
}
DropDownList.DataSource = dates;
DropDownList.DataBind();