显示日期时间字符串或空字符串的函数

发布于 2024-09-11 17:43:54 字数 824 浏览 9 评论 0原文

我尝试创建一个视图助手,它接受 DateTime 对象并返回一个字符串。如果 DateTime 对象等于 new DateTime(0),则该函数返回空字符串。否则返回格式化的日期时间字符串。到目前为止这有效。

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString("{0:g}");
}

问题是,我想将格式(“{0:g}”)作为参数传递:

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString(format);
}

但它无法正常工作。如果我从我的视图中调用

<%: Html.DateTimeOrEmpty(Model.StopDate, "{0:g}") %>

带有“{0:g}”作为“format”参数的函数,我会得到类似“{O:n.Chr.}”的内容,这不是我所期望的

I tried to create a view helper which takes a DateTime object and returns a string. If the DateTime object equals a new DateTime(0), the function returns an empty string. Otherwise return a formatted DateTime string. This works so far.

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString("{0:g}");
}

The Problem is, that I'd like to pass the format ("{0:g}") as a parameter:

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString(format);
}

But it doesn't work properly. If I call the helper from my view

<%: Html.DateTimeOrEmpty(Model.StopDate, "{0:g}") %>

the function with "{0:g}" as parameter for "format", I get something like "{O:n. Chr.}", which is not what I expect

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温暖的光 2024-09-18 17:43:54

{0:} 部分用于格式化 string.Format 参数 - 您只需要将“g”传递到 ToString() 中。

<%: Html.DateTimeOrEmpty(Model.StopDate, "g") %>

但是,我建议您

  1. 对原始 DateTime 值进行比较 - 或者,如果您确实想要比较字符串,则只需构造一次显示字符串并重复使用
  2. 您使用静态 DateTime.MinValue 进行比较,而不是创建一个每次都会创建新的 DateTime - 或者至少创建一个静态实例来进行比较。

IE

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return (dateTime == DateTime.MinValue)
        ? String.Empty 
        : dateTime.ToString(format);
}

The {0:} part is for formatting string.Format parameters - you just want the "g" to pass into ToString().

<%: Html.DateTimeOrEmpty(Model.StopDate, "g") %>

However, I'd recommend you

  1. do the comparisons on the raw DateTime values - or if you do want to compare strings you only construct the display string once and re-use that
  2. you use the static DateTime.MinValue for the comparison rather than creating a new DateTime each time - or at least create one static instance to compare against.

i.e.

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return (dateTime == DateTime.MinValue)
        ? String.Empty 
        : dateTime.ToString(format);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文