【问题标题】:Does yyyy is valid format for DateTime C#yyyy 是否是 DateTime C# 的有效格式
【发布时间】:2016-10-14 12:59:17
【问题描述】:

yyyy 是DateTime 的有效格式吗?我只想存储年份。由于 mvc 模型抛出 yyyy is not valid format for datetime 的错误。

[DisplayName("Year Obtained")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy}", ApplyFormatInEditMode = true)]
public DateTime reDateFrom { get; set; }

【问题讨论】:

  • DisplayFormat 属性仅在使用Html.DisplayFor 等方法时会影响显示格式,而不是数据库格式。
  • 如何设置数据库格式的年份?
  • 如果要存储 4 位数年份而不是完整日期,请在 SQL 上使用 int 数据类型。日期和日期时间应用于完整的日期(和时间)格式。

标签: c# asp.net c#-4.0


【解决方案1】:

您可以在模型中做一件事,您可以将类型设置为 int,因为年份部分是整数类型,您也需要更改数据库中的类型。

或者您可以将类型作为字符串放入模型和控制器中,同时存储您可以这样做

    string dateTime = DateTime.UtcNow.ToString("yyyy");

仅存储年份部分

【讨论】:

    【解决方案2】:

    您必须将年份的 Int 类型存储到数据库中。

    或者如果您想将 Datetime 类型保留在数据库中,您可以在 Models MVC 中创建一个 MetaData 类,然后创建一个新的 Int 属性“获得年份”,请参见下文:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace YourWebApp.Models
    {
        [MetadataType(typeof(YourClassMetaData))]
        public partial class YourClass
        {
            [DisplayName("Year Obtained")]
            public int YYObtained {
                get
                {
                    return this.reDateFrom.Year;
                }
            }
        }
    
        public class YourClassMetaData
        {
            [DataType(DataType.Date)]
            public DateTime reDateFrom { get; set; }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2010-12-23
      • 1970-01-01
      • 2019-02-02
      相关资源
      最近更新 更多