如何获取当前日期和时间?

时间:2015-10-30 12:38:33

标签: c# asp.net asp.net-mvc entity-framework date

我希望获得当前的日期和时间。

我做了什么:

  1. 在Vs 2013社区为asp.net mvc5(c#)
  2. 创建了一个新项目
  3. 为我的数据库添加了edmx。所以它首先是数据库。
  4. 使用Add>为我的每个数据库类添加了Model-View-Controller。新的脚手架项目。
  5. VS为CRUD操作创建了视图和控制器。
  6. 现在视图中有两个字段,分别代表日期和时间。
  7. 早期VS创建了简单的文本框,但我在模型中添加了注释,因此它在视图中创建了Datepicker和TimePicker。
  8. 我想要的是两个领域的当前日期和时间。
  9. 模型:

    [DataType(DataType.Date)]
    public Nullable<System.DateTime> Date { get; set; }
    [DataType(DataType.Time)]
    

    视图:

        <div class="form-group">
        @Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2"})
        <div class="col-md-10">
    
            @Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control"} })
            @Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
        </div>
    </div>
    
    <div class="form-group">
        @Html.LabelFor(model => model.Time, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Time, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Time, "", new { @class = "text-danger" })
        </div>
    </div>
    

    控制器:

    public ActionResult Create()
    {
        return View();
    }
    

    These are date and time picker. i would like to have actual current date and time

    这些是日期和时间选择器。我希望有实际的当前日期和时间

    到目前为止我尝试了什么:

    使用@value = @model.returndate = DateTime.Now;

    model.returndate总是给出错误。我试图在控制器和视图中使用。

    使用Viewbag.Date = DateTime.Now;并在视图@Value = @Viewbag.Date中没有任何反应。

3 个答案:

答案 0 :(得分:2)

当您使用ModelEditorFor来显示模型属性中的日期时,您应该在返回视图之前进行设置:

public ActionResult Create()
{
    return View(new YourModel { Date = DateTime.Now } );
}

答案 1 :(得分:2)

当您绑定到模型属性时,您希望在那里的值必须在模型属性上设置,或者在ModelState中设置(由Request的值组成,{{1} }和ViewData)。

出于您的目的,最合适的方法是设置model属性的值。您可以像@ ken2k建议的那样手动执行此操作,或者您可以使用自定义getter将其设置为属性的默认值:

ViewBag

现在,这两个属性将始终设置为显式值或当前日期/时间。

注意:我使用[DataType(DataType.Date)] private DateTime? date; public DateTime Date { get { return date ?? DateTime.Today; } set { date = value; } } [DataType(DataType.Time)] private DateTime? time; public DateTime time { get { return time ?? DateTime.Now; } set { time = value; } } 作为时间值,但您应该小心。通常,您应始终将UTC用于时间,然后根据需要转换为/从本地转换。主要问题是ASP.NET中的本地时间是服务器时间,这可能是也可能不是用户操作的时间,甚至是组织运行的时间。特别是如果您执行类似的操作在Azure中建立一个站点或者类似的站点,以便在不同国家/地区之间实现负载均衡以获得更高的可用性,然后本地时间变得毫无意义且实际上是灾难性的。

答案 2 :(得分:0)

在这里和那里看后,我这样做是为了实现我的目标,即获得当前的日期和时间。

由于它是数据库第一种方法,我需要找到模型类,它位于Model.edmx&gt; model.tt&gt; mycalss.cs下。

然后我添加了像Chris Pratt的回答一样的注释。这给了我日期和时间,但不是日期选择器。

现在我去了nuget包管理,在项目中添加了jquery UI。转到此处:jQuery Date picker

它给了我漂亮的,适合移动设备的日期选择器和当前日期。