使用MVC获取DateTime类型数据

Sle*_*ven 5 c# asp.net-mvc datetime asp.net-mvc-4

需要解决的问题:

  • 从 MVC 应用程序获取时间和日期

我的具体问题:我有一个停车管理应用程序。由于可以提前预订停车位,我需要知道停车开始时间和日期。对于我的模型,我使用 DateTime,因为 MSDN 将其宣传为全功能时间和日期数据类型:

.NET Framework DateTime 类提供了一个功能齐全的接口,用于编写处理时间的程序。

我的研究:我已经搜索了此类问题的答案或典型解决方案(最佳实践),几乎得到的只是:

  • 全球化问题
  • 时区问题
  • 不同的日期格式

但没有考虑如何使用 MVC 应用程序方便地获取日期和时间。

我找到的最接近的答案是 Scott Hanselman 的 2009 年解决方案 - http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx

人们倾向于使用的其他解决方案是不同的 jQuery 插件。

对我来说,这些解决方案似乎有点过度设计。因为我不知道还能问哪里,也不知道这些是否是唯一的解决方案 - 我的问题是:

  • 我有哪些选择来获取 MVC 的时间和日期 - 最佳实践?

在我的模型中我使用:

[DataType(DataType.DateTime), DisplayFormat(DataFormatString = "{0:HH:mm dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? ParkingStartTime { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我看来,我使用:

 <div class="editor-label">
        @Html.LabelFor(vm => vm.newCarOnParkingSpot.ParkingStartTime)
    </div>
    <div class="editor-field">
        @Html.EditorFor(vm => vm.newCarOnParkingSpot.ParkingStartTime)
        @Html.ValidationMessageFor(vm => vm.newCarOnParkingSpot.ParkingStartTime)
    </div>
Run Code Online (Sandbox Code Playgroud)

这个解决方案给了我一个 HTML5 日期选择器,但没有时间插入选项: https: //i.stack.imgur.com/fGPTV.png


这是我的第一个问题,所以如果我在这个问题上有误,请温柔。

Sle*_*ven 0

所以正如 @SLC 建议我使用 jQuery。我选择了 jQuery DateTimePicker http://xdsoft.net/jqplugins/datetimepicker/

根据 SLC:

没有最佳实践,jquery 日期选择器可以正常工作并且非常简单

他是对的。我在 7 分钟内解决了我的问题。

我所做的只是:

  • 将 jQuery DateTimePicker 文件添加到我的项目中(来自上面的站点)
  • 按照该网站上提供的说明进行操作(在 cshtml 文件中添加了 2 个脚本和 1 个 css 文件,在所需的输入字段中添加了 id,并在之前添加的 id 上调用了 jQuery 函数 - 瞧!)
  • 使用 DateTime 数据类型将数据保存到数据库花费了 0 分钟

我觉得需要改进的地方是我的 jQuery 函数调用。还有比这更好的方法吗?:

<script type="text/javascript">
$(document).ready(function () {
    jQuery('#datetimepicker').datetimepicker();
});
Run Code Online (Sandbox Code Playgroud)