asp.net-mvc - EditorFor只能输入时间,不能设置24小时格式
问题描述
我正在尝试不同的东西,比如不同的 DataFormatString 甚至不同的控件来使它使用 24 格式,但它保持 AM/PM 格式,如何使其成为 24hs 格式?
编辑: 经过更多搜索,我意识到这个相同的代码向某些人显示 24 小时格式,所以我可以重新表述为:什么可以在我的 PC 中配置为 AM/PM?我已经将 web.config 中的语言环境更改为 24 小时语言环境,但结果是一样的。我的区域设置也是24小时制。
看法:
<div class="col-md-2">
Horario teórico Desde
@Html.EditorFor(model => model.HorarioTeoricoDesde, new { htmlAttributes = new { @class = "form-control form-control-sm" } })
@Html.ValidationMessageFor(model => model.HorarioTeoricoDesde, "", new { @class = "text-danger" })
</div>
视图模型:
[Display(Name = "Horario Teorico Desde")]
[Required(ErrorMessage = "El Horario Teorico Desde es Requerido")]
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
public DateTime? HorarioTeoricoDesde { get; set; }
我的区域设置是 24 小时,西班牙语。这是我的 web.config:
<system.web>
<globalization culture="es-AR" uiCulture="es-AR" />
这就是我的看法:
谢谢!!
解决方案
当您使用DataType.Time
输入时,类型为time
.
输入类型time
是 HTML5 中的新内容。这种类型的支持仍然很差。即使您看到 HH:MM AM/PM 格式的时间(24 版本(目前正在开发中)),在后端它仍然以 24 小时格式工作,您可以尝试使用一些基本的 javascript 来查看。
示例:使用bootstrap-timepicker。
视图模型:-
public class Time24ViewModel
{
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
public DateTime? HorarioTeoricoDesde { get; set; }
[Display(Name = "Horario Teorico Desde")]
[Required(ErrorMessage = "El Horario Teorico Desde es Requerido")]
public string HorarioTeoricoDesdeStr
{
get
{
return HorarioTeoricoDesde.HasValue ? HorarioTeoricoDesde.Value.ToString("HH:mm") : "";
}
set
{
if (!string.IsNullOrWhiteSpace(value))
{
var time = TimeSpan.Parse(value);
HorarioTeoricoDesde = new DateTime(time.Ticks);
}
}
}
}
控制器:-
public class TimeController : Controller
{
// GET: Time
public ActionResult Time24()
{
var model = new Time24ViewModel
{
HorarioTeoricoDesde = DateTime.Now
};
return View(model);
}
[HttpPost]
public ActionResult Time24(Time24ViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
return View(model);
}
}
看法:-
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-timepicker/0.5.2/js/bootstrap-timepicker.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-timepicker/0.5.2/css/bootstrap-timepicker.css" rel="stylesheet" />
@using (Html.BeginForm("Time24", "Time", FormMethod.Post)) {
<div class="col-md-2">
Horario teórico Desde
@Html.EditorFor(model => model.HorarioTeoricoDesdeStr, new { htmlAttributes = new { @class = "form-control form-control-sm" } })
@Html.ValidationMessageFor(model => model.HorarioTeoricoDesdeStr, "", new { @class = "text-danger" })
</div>
<div class="col-md-2">
<input type="submit" class="btn btn-dark" value="Submit"/>
</div>
}
<script>
$('#HorarioTeoricoDesdeStr').timepicker({
showMeridian: false
});
</script>
(经测试)
推荐阅读
- elasticsearch - Elasticsearch 可以增量恢复吗
- javascript - 为什么在 Javascript/ReactNative 中从 Date 函数获取的本地时区会不时变化?
- python - 使用 Pandas 对 OTC Markets 筛选器网站进行网络抓取时出现“未找到表”错误
- python - Matplotlib FuncAnimation 无法运行并在 tkinter GUI 中被绕过
- python - ModuleNotFoundError: No module named 'torch' -- 到目前为止没有任何在线工作
- java - 如何在 Intelij IDEA 上使用 Swing UI 连接 SQL 表
- javascript - Firebase 函数 snapshot.docs.maps 不是函数
- javascript - 是否可以避免 Flow 上较长的相对导入路径?
- javascript - 语音识别:recognition.onresult() 不触发
- mysql - 为什么 MySQL8.0 在这种情况下使用文件排序?