【问题标题】:how to display plain string as date mvc如何将纯字符串显示为日期 mvc
【发布时间】:2013-10-21 11:37:05
【问题描述】:

在我的 mvc 应用程序中,我以字符串格式存储了我的日期。 例如:10212013

但我想在我的 UI 中将那个刺痛显示为日期例如:2013 年 10 月 21 日

如何存档?是否可以为此目的使用DisplayFormat

编辑
这是我需要做的。

@Html.DisplayFor(model => DailyTransaction.MyDate)  

MyDate 的数据类型是字符串,所以这将显示为 10212013

但我需要将其显示为 10/21/2013

我可以在 MVC 项目的视图中使用字符串格式吗

我尝试使用以下内容,但这对我也不起作用。

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public string MyDate{ get; set; }

【问题讨论】:

  • 在正确的索引中插入两个'/'?
  • 如果您正在处理日期,您应该以更适合ToStringParse/TryParse 的格式存储,这样您就不必担心这一点。

标签: c# asp.net-mvc datetime


【解决方案1】:

尝试创建一个自定义的 DisplayFormatAttribute,它将以正确的格式格式化字符串。看到这个How to make configurable DisplayFormat attribute

编辑:再次查看您的问题后,您可以查看使用编辑器模板来显示数据:请参阅:http://blogs.msdn.com/b/nunos/archive/2010/02/08/quick-tips-about-asp-net-mvc-editor-templates.aspx

【讨论】:

    【解决方案2】:

    使用DateTime.ToString()点赞;

    YourDateTime.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
    

    例如;

    DateTime d = DateTime.Today;
    Console.WriteLine(d.ToString("MM/yy/yyyy", CultureInfo.InvariantCulture));
    

    输出将是;

    10/21/2013
    

    这里是 DEMO

    你也可以使用DisplayFormatAttribute.DataFormatStringlike;

    [DisplayFormat(DataFormatString="{0:MM/yy/yyyy}")]
    

    【讨论】:

    • 我插入了 [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public string MyDate { get; set; } 但格式没有变化
    • 此方法仅在您的日期为 DateTime 时有效。但你的是一个字符串。
    【解决方案3】:

    是的,你只需要使用插入功能。这是一个例子

    string dateValue = "10212013";          
    string dateFormat = x.Insert(2, "/");
    dateFormat = dateFormat.Insert(5, "/");
    

    就是这样……

    【讨论】:

      【解决方案4】:

      如果您确定日期的保存格式,您可以使用Substring()Format() 方法如下:

      string.Format("{0}/{1}/{2}", myStringDate.Substring(0,2),
                                   myStringDate.Substring(2,2),
                                   myStringDate.Substring(4))
      

      您可以将此应用于您的班级和here is a demo

      public class myModelClass
      {
          private string _MyDate;
          public string MyDate
          {
              get {
                  return string.Format("{0}/{1}/{2}", _MyDate.Substring(0,2),
                                           _MyDate.Substring(2,2),
                                           _MyDate.Substring(4)); }
              set { _MyDate = value; }
          }
      
      }
      

      【讨论】:

        【解决方案5】:

        您可以为特定于您的要求的各种数据类型创建自定义模板。

        要创建自定义模板,请在 /Views/Shared/DisplayTemplates 中创建一个新文件 - 将其命名为 StringToDate.cshtml。名称很重要,在下面的函数调用中使用。

        接下来,在文件中添加代码以根据需要将字符串转换为日期格式。最简单的解决方案是插入/ 字符。

        @model string
        if (Model != null && Model.Length == 8)
        {
          @(Model.Insert(2,"/").Insert(5,"/"))
        } else {
          @("Err")
        }
        

        将以上内容添加到文件中并保存。如果基本格式检查失败,else 部分只会输出错误。

        接下来在您的视图中,您需要在哪里显示此值。只需使用

        @Html.DisplayFor(model => model.StringDate, "StringToDate")
        

        【讨论】:

          猜你喜欢
          • 2018-06-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-24
          • 2019-03-23
          • 2019-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多