El valor especificado no se ajusta al formato exigido aaaa-MM-dd


Tengo una aplicación.Net MVC 5 que utiliza Anotaciones de datos, Entity-Framework Jquery 2.1.3 y Jquery UI 1.11.4.

Cuando renderizo un formulario de edición con una entrada de fecha de tipo utilizando el formato del Reino Unido "dd / MM/ AAAA"; aparece el siguiente mensaje de error al usar Google Chrome:

El valor especificado "10/10/2001" no se ajusta al formato exigido, "aaaa-MM-dd". jquery-2.1.3.js: 5317

Modelo

public class MyModel
{
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public string MyDate { get; set; }
}

Mark subir

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />

El valor se establece correctamente en el control de entrada, pero la fecha no aparece en el navegador. Primero pensé que esto era un problema con jQuery, ya que está apareciendo el archivo de script jQuery, pero al probar en IE y Firefox todo está funcionando bien.

Entonces asumí que era mi configuración regional en Chrome como por defecto Chrome piensa que todo el mundo inglés está en Estados Unidos, he cambiado la configuración regional para Reino Unido y sigue siendo el mismo problema aparece.

Una solución simple sería para cambiar el formato en mi modelo a universal, pero para los usuarios del Reino Unido esto es un poco extraño.

¿Hay alguna manera de decirle a Chrome que acepta formatos de fecha en "dd / MM / AAAA"?

Author: Andy Clark, 2015-06-12

5 answers

Las especificaciones para el selector de fechas HTML5 indican que la fecha debe estar en el formato yyyy-MM-dd (formato ISO). Esto significa que usted DisplayFormatAttribute debe ser

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }

Alternativamente, puede agregar manualmente el formato utilizando

@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date"  })

La opción later le permite mantener el DataFormatString = "{0:dd/MM/yyyy}") para su uso en @Html.DisplayFor()

 46
Author: Stephen Muecke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-01 16:15:42
 2
Author: M. Ruiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-21 18:06:31

Me gustaría destacar algo en la respuesta aquí.

Si está construyendo una aplicación que tiene Globalización y Localización, entonces el método de pasar un formato utilizando un helper Html será mejor. También puede usar EditorFor y pasar el id o clase necesarios para datepicker.

 0
Author: user3357031,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 13:12:55

Establece el atributo type como texto.

@Html.TextBoxFor(m => m.MyDate, new { @type = "text"  })
 0
Author: devlin carnate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-19 22:30:48

El problema podría ser del tipo="fecha". Esa era mi situación de todos modos. Funcionó una vez que se cambió a type="text". Si la interfaz está construida con un contenedor MVC, debe reemplazar o establecer el atributo html en consecuencia.

 0
Author: Petre Ionescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-05 15:05:31