C# 如何查看当前日期和时间?

C# 如何查看当前日期和时间?,c#,asp.net,asp.net-mvc,entity-framework,date,C#,Asp.net,Asp.net Mvc,Entity Framework,Date,我想查看当前的日期和时间 我所做的: 在Vs 2013社区中为asp.net mvc5(c#)创建了一个新项目 为我的数据库添加了一个edmx。所以首先是数据库 使用Add>new Scaffold item为我的每个数据库类添加了模型视图控制器 VS为CRUD操作创建了视图和控制器 现在视图中有两个字段,分别表示日期和时间 早期的VS创建了简单的文本框,但我在模型中添加了注释,所以它在视图中创建了Datepicker和TimePicker 我想要的是两个字段中的当前日期和时间 型号: [Dat

我想查看当前的日期和时间

我所做的:

  • 在Vs 2013社区中为asp.net mvc5(c#)创建了一个新项目
  • 为我的数据库添加了一个edmx。所以首先是数据库
  • 使用Add>new Scaffold item为我的每个数据库类添加了模型视图控制器
  • VS为CRUD操作创建了视图和控制器
  • 现在视图中有两个字段,分别表示日期和时间
  • 早期的VS创建了简单的文本框,但我在模型中添加了注释,所以它在视图中创建了Datepicker和TimePicker
  • 我想要的是两个字段中的当前日期和时间
  • 型号:

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

    这些是日期和时间选择器。我想知道当前的实际日期和时间

    到目前为止,我所尝试的:

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

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


    使用
    Viewbag.Date=DateTime.Now和视图中的
    @Value=@Viewbag.Date
    什么都没有发生

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

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

    绑定到模型属性时,必须在模型属性上或在
    ModelState
    中设置要存在的值(由
    Request
    ViewData
    ViewBag
    中的值组成)

    出于您在此处的目的,最合适的方法是设置模型属性的值。您可以按照@ken2k的建议手动执行,也可以使用自定义getter将其设置为属性的默认值:

    [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; }
    }
    
    现在,这两个属性将始终设置为显式值或当前日期/时间


    注意:我使用了
    DateTime.Now
    作为时间值,但是您应该小心。通常,您应该始终使用UTC表示时间,然后根据需要转换为本地或从本地转换。主要问题是ASP.NET中的本地时间是服务器时间,这可能是用户操作的时间,也可能不是您的组织操作的时间。特别是如果你在Azure中建立一个站点,或者类似于在不同国家/地区进行负载平衡以获得更高的可用性,那么本地时间将变得毫无意义,实际上是灾难性的。

    在到处查看之后,我这样做是为了实现我的目标,即查看当前日期和时间

    因为这是数据库优先的方法,所以我需要找到model类,它位于model.edmx>model.tt>mycalss.cs下

    然后我添加了注释,如Chris Pratt的答案。这给了我日期和时间,但没有日期选择器

    现在我转到nuget包管理,在项目中添加了jQueryUI。到这里:


    它给了我一个漂亮的,移动友好的日期选择器和当前日期

    对。对在这里输入问题。在将模型返回到视图之前,需要在GET方法中设置值-
    model.Date=DataTime.Today;返回视图(模型)
    并且您需要将
    [DisplayFormat(DataFormatString=“{0:yyyy-MM-dd}”,ApplyFormatInEditMode=true)]
    属性应用于属性(注意ISO格式),这对我来说是新的。model.Date=DataTime.Today;给出错误“名称模型在当前上下文中不存在”。您需要首先在GET方法-
    var model=new YourModel()中初始化模型;model.Date=DateTime.Today;返回视图(模型)
    (您应该始终将模型的实例返回到视图中注意,
    这是
    EditorFor()
    生成的,仅在Chrome中受支持。在IE和FireFox中,它只会显示一个普通的文本框。如果您想要一致的UI,最好使用jquery日期选择器。所做的是:在我的模型中
    [DataType(DataType.Date)]私有日期时间?日期;公共日期时间日期{get{return Date??DateTime.Today;}在我的控制器中设置{Date=value;}}
    在get的创建操作中:
    事务tr=new Transaction();tr.Date=DateTime.Now;
    这个给定的日期和时间也在同一个文本框中。
    [DataType(DataType.time)]私有DateTime?time;公共DateTime时间{get{return time??DateTime.Now;}设置{time=value;}
    引发异常:您的EDMX与实体类不同步。您需要更新您的EDMX和/或您的数据库(如果EDMX是由此生成的)。或者,扔掉所有的EDMX垃圾,先使用代码。请参阅:
    public ActionResult Create()
    {
        return View(new YourModel { Date = DateTime.Now } );
    }
    
    [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; }
    }