如何在C#和SQL中格式化Datetime和datetime2以满足我的需求

时间:2013-04-03 16:48:31

标签: c# asp.net sql entity-framework datetime

我对此很陌生,我正在使用具有Datetime类型属性的MVC视图模型:

namespace FP.WebUI.Models
{
    public class AdminSessionsViewModel
    {
        NewSession _NewSession = new NewSession();
        public NewSession NewSession { get { return _NewSession; } set { _NewSession = value; } }
        public IEnumerable<Sessions> CurrentSessions { get; set; }
    }

    public class NewSession
    {
        [Required]
        public string Title { get; set; }
        public string Description { get; set; }
        [Required]
        public DateTime Date { get; set; }
    }
}

我希望Date属性格式如下: 27/05/2013 06:44 AM 和SQL数据库内部相同。

我真的不知道如何在Date类中配置NewSession以在我的Textbox中自动显示这样的内容,并且当映射回Entity Framework时会像这样保存在数据库中。

这是我的实体框架流畅的API配置:

namespace FP.Domain.Configurations
{
    public class SessionsConfig : EntityTypeConfiguration<Sessions>
    {
        public SessionsConfig()
        {
            ToTable("Sessions");
            Property(p => p.Name).IsRequired();
            Property(p => p.PhotosCount).IsRequired();
            Property(p => p.CoverPhoto).IsRequired();
            Property(p => p.Date).HasColumnType("datetime2").HasPrecision(0);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您需要将[DisplayFormat]属性添加到DateTime属性中。这应该照顾用户界面。 请参阅此答案:Converting DateTime format using razor

[Required]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy hh:mm tt}", ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }

您无需控制日期时间在SQL Server中的存储方式 - 它将存储为日期,而不是字符串。您可以使用T / SQL中的FORMAT()函数在存储过程中格式化该日期等。如果您没有MSSQL 2012,则可以使用DATEPART()CONVERT()函数。