指定的值不符合要求的格式 yyyy-MM-dd
The specified value does not conform to the required format yyyy-MM-dd
我有一个使用数据注释、实体框架 Jquery 2.1.3 和 Jquery UI 1.11.4 的 .Net MVC 5 应用程序。
当我使用英国格式呈现包含日期类型输入的编辑表单时 "dd/MM/YYYY";使用 Google Chrome:
时出现以下错误信息
The specified value '10/10/2001' does not conform to the required format, 'yyyy-MM-dd'. jquery-2.1.3.js:5317
型号
public class MyModel
{
[Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public string MyDate { get; set; }
}
加价
<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" />
输入控件中的值设置正确,但日期未显示在浏览器中。我首先认为这是 jQuery 的问题,因为它出现在 jQuery 脚本文件中,但在 IE 和 Firefox 中测试时一切正常。
然后我假设这是我在 chrome 中的区域设置,因为默认情况下 Chrome 认为每个英国人都在美国,我将区域设置更改为英国,但仍然出现同样的问题。
一个简单的修复方法是将我的模型中的格式更改为通用格式,但对于英国用户来说这有点陌生。
有没有办法告诉 chrome 接受 "dd/MM/YYYY" 中的日期格式?
HTML5 日期选择器的规范声明日期必须采用 yyyy-MM-dd
格式(ISO 格式)。这意味着你 DisplayFormatAttribute
必须
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }
或者您可以使用
手动添加格式
@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date" })
后面的选项允许您保留 DataFormatString = "{0:dd/MM/yyyy}")
在 @Html.DisplayFor()
中使用
您可以使用 InputTagHelper.Format
<input asp-for="MyDate" asp-format="{0:yyyy-MM-dd}" />
我想在此处的答案中强调一些内容。
如果您正在构建一个具有全球化和本地化的应用程序,那么使用 Html 帮助程序传递格式的方法会更好。您也可以只使用 EditorFor 并为 datepicker 传入必要的 id 或 class。
将 type
属性设置为文本。
@Html.TextBoxFor(m => m.MyDate, new { @type = "text" })
问题可能来自类型="date"。无论如何,那是我的情况。将其更改为 type="text" 后即可使用。如果界面是使用 MVC 包装器构建的,则需要相应地替换或设置 html 属性。
我遇到了同样的问题
我这样做了,它开始工作了
<input type="date" class="form-control text-box single-line" id="EndDate" name="EndDate" value=@Model.EndDate.ToString("yyyy-MM-dd") />
您不需要任何 jquery 或 ASP 功能来修复它。简单的 JS 就可以了。
问题是浏览器需要格式 yyyy-mm-dd。
并且 toLocaleString 不允许日期采用这种格式。所以经过搜索我发现这是ISO格式,我们可以使用 Date().toISOString() 来获取所需格式的日期。
我使用切片方法提取日期部分只是因为 Date().toISOString() returns date with time.
我的代码:
date: new Date().toISOString().slice(0, 10)
我有一个使用数据注释、实体框架 Jquery 2.1.3 和 Jquery UI 1.11.4 的 .Net MVC 5 应用程序。
当我使用英国格式呈现包含日期类型输入的编辑表单时 "dd/MM/YYYY";使用 Google Chrome:
时出现以下错误信息The specified value '10/10/2001' does not conform to the required format, 'yyyy-MM-dd'. jquery-2.1.3.js:5317
型号
public class MyModel
{
[Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public string MyDate { get; set; }
}
加价
<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" />
输入控件中的值设置正确,但日期未显示在浏览器中。我首先认为这是 jQuery 的问题,因为它出现在 jQuery 脚本文件中,但在 IE 和 Firefox 中测试时一切正常。
然后我假设这是我在 chrome 中的区域设置,因为默认情况下 Chrome 认为每个英国人都在美国,我将区域设置更改为英国,但仍然出现同样的问题。
一个简单的修复方法是将我的模型中的格式更改为通用格式,但对于英国用户来说这有点陌生。
有没有办法告诉 chrome 接受 "dd/MM/YYYY" 中的日期格式?
HTML5 日期选择器的规范声明日期必须采用 yyyy-MM-dd
格式(ISO 格式)。这意味着你 DisplayFormatAttribute
必须
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }
或者您可以使用
手动添加格式@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date" })
后面的选项允许您保留 DataFormatString = "{0:dd/MM/yyyy}")
在 @Html.DisplayFor()
您可以使用 InputTagHelper.Format
<input asp-for="MyDate" asp-format="{0:yyyy-MM-dd}" />
我想在此处的答案中强调一些内容。
如果您正在构建一个具有全球化和本地化的应用程序,那么使用 Html 帮助程序传递格式的方法会更好。您也可以只使用 EditorFor 并为 datepicker 传入必要的 id 或 class。
将 type
属性设置为文本。
@Html.TextBoxFor(m => m.MyDate, new { @type = "text" })
问题可能来自类型="date"。无论如何,那是我的情况。将其更改为 type="text" 后即可使用。如果界面是使用 MVC 包装器构建的,则需要相应地替换或设置 html 属性。
我遇到了同样的问题 我这样做了,它开始工作了
<input type="date" class="form-control text-box single-line" id="EndDate" name="EndDate" value=@Model.EndDate.ToString("yyyy-MM-dd") />
您不需要任何 jquery 或 ASP 功能来修复它。简单的 JS 就可以了。 问题是浏览器需要格式 yyyy-mm-dd。
并且 toLocaleString 不允许日期采用这种格式。所以经过搜索我发现这是ISO格式,我们可以使用 Date().toISOString() 来获取所需格式的日期。
我使用切片方法提取日期部分只是因为 Date().toISOString() returns date with time.
我的代码:
date: new Date().toISOString().slice(0, 10)