Twitter bootstrap 引导DateTimePicker和现有日期解析问题?

Twitter bootstrap 引导DateTimePicker和现有日期解析问题?,twitter-bootstrap,asp.net-mvc-5,bootstrap-datetimepicker,Twitter Bootstrap,Asp.net Mvc 5,Bootstrap Datetimepicker,有关版本的信息,请使用Bootstrap 3.0.0(如果我没记错的话,内置了新的MVC模板)、Bootstrap datetimejs 4.0.0()和ASP.NET MVC 5 使用MVC,我绘制了一系列字段,但这一个字段有现有数据(这是在检查Chrome中的元素时,所以它不是HTMLHelper代码): 编辑:已尝试尝试以下操作: $('.timepicker').each(function () { $(this).datetimepicker({ pickDate:

有关版本的信息,请使用Bootstrap 3.0.0(如果我没记错的话,内置了新的MVC模板)、Bootstrap datetimejs 4.0.0()和ASP.NET MVC 5

使用MVC,我绘制了一系列字段,但这一个字段有现有数据(这是在检查Chrome中的元素时,所以它不是HTMLHelper代码):

编辑:已尝试尝试以下操作:

 $('.timepicker').each(function () {
   $(this).datetimepicker({
     pickDate: false
   });
 });
并在查看moment.js文档的基础上将数据格式设置为该格式,但我认为斜杠和冒号不包括在文档中(以匹配1/1/2000 8:00:00 PM)

而且它似乎仍然无法解析日期时间

出于某种原因,当控件呈现时,在文本框中我看到一个完全不同的时间列表(下午1:00),它告诉我它可能无法解析出该值。我确实希望渲染时间仅为小时:分钟AM/PM,但我认为必须绑定到标准DateTime对象,对吗?从源代码看,似乎输入验证错误已经被注入,所以这可能是我提交表单的更大问题,只是关注文本框

我有没有做错什么?我知道我想输入一个“mm/dd/YYYY hh:mm:ss PP”,并将其解析为“hh:mm PP”部分。保存时,我实际上只关心时间组件(我强制日期为2000年1月1日,因为我根本不关心日期组件)


编辑:在多次尝试之后,我注意到正在解析的值(主要是通过转储其他值)是该值似乎以小时为单位拉动MM部分。输入将是一个完整的datetime,但我只希望给用户提供要管理的时间组件(我强制所有日期仅为2000年1月1日)。在这个阶段,我想如果我能完成这部分,我会很好。

看起来你实际上使用了一个不同的日期时间选择器,它不再是积极开发的,我建议切换到你实际链接到的版本。许多数据属性看起来与表单验证相关,并且可能与您尝试执行的操作冲突。我建议您使用data val=“false”,直到您可以让选择器按预期工作,然后再处理任何需要的验证。

如果您使用的是my Datetimepicker的v4,您可以通过执行以下操作轻松完成:

$('.timepicker').datetimepicker({
    format: 'LT'
});
无需额外的
数据-

另外,作为额外的好处,您可以使用
编辑器for
模板来设置文本框

Model.cs Time.cshtml
//此文件位于/Shared/EditorTemplates/Time.cshtml中
//对于DataType.Date和DataType.DateTime,您可以轻松地执行此操作
@{
var attributes=newdictionary();
添加(“类”、“窗体控件”);
添加(“类型”、“日期时间”);
}
@Html.TextBox(“,ViewData.TemplateInfo.FormattedModelValue,属性)

尝试在格式的小时部分使用小写字母“h”,例如:

$('.timepicker').each(function () {
  $(this).datetimepicker({
    format: 'format="M/D/YYYY h:mm:ss A"'
  });
});

我不是100%确定,但我认为data-*属性是由ASP.NET MVC生成的。似乎“必须有一个有效值”的东西必须是“开始(时间)”的,因为“开始(时间)”只在模型上设置了DisplayAttribute。当我在Chrome控制台中看到它没有定义或相似时,我实际上意识到我使用了错误的格式(pickDate:false)。切换到格式:“LT”会弹出时间,但在不应该出现的时候出现问题。我实际上使用的是我以前链接的版本号(从bootstrap-datetimepicker.js文件中获取了版本号)。@Robert如果日期不相关,请查看将输入值限制为仅时间。因为将选择器的显示限制为“仅限时间”要求格式为“仅限时间”。有点困惑,但请看这一点,它说明了这个想法。还要验证您使用的脚本与小提琴中的脚本相同。请注意,我将选择器格式设置为与输入值的格式相匹配,如-您可以使用“M/D/YYYY h:mm:ss A”中的日期,但无法隐藏日期选择。这很奇怪,我要分享一个不使用数据格式属性的屏幕截图,它仍然显示为下午1点。然后我看到您添加了一个编辑器模板,并将DateTimes标记为DataType(DataType.Time)。不确定它的哪个组件工作,但这纠正了问题,它现在将8pm呈现为正在传递的内容。谢谢你(现在我知道你可以在共享、非常酷的附加奖励中使用EditorTemplates)
 $('.timepicker').each(function () {
   $(this).datetimepicker({
     pickDate: false
   });
 });
data-format="M/D/YYYY H:mm:ss A"
$('.timepicker').datetimepicker({
    format: 'LT'
});
using System.ComponentModel.DataAnnotations;
[DataType(DataType.Time)]
public DateTime Updated { get; set; }
//This file goes in /Shared/EditorTemplates/Time.cshtml
//You can easily do this for DataType.Date and DataType.DateTime
@{
    var attributes = new Dictionary<string, object>();
    attributes.Add("class", "form-control");
    attributes.Add("type", "datetime");
}
<div class="input-group timepicker col-sm-3 col-md-3" id="@(ViewData.TemplateInfo.HtmlFieldPrefix)-timepicker">
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, attributes)
    <span class="input-group-addon">
        <span class="fa fa-clock-o"></span>
    </span>
</div>
$('.timepicker').each(function () {
  $(this).datetimepicker({
    format: 'format="M/D/YYYY h:mm:ss A"'
  });
});