【问题标题】:How get full short date by culture如何通过文化获得完整的短期约会
【发布时间】:2012-12-21 16:45:43
【问题描述】:

此代码返回给我'M/d/yyyy' 但我需要'mm/dd/yyyy' 怎么做?

((CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern)

【问题讨论】:

  • 不确定:您想从文化中获取格式,并且希望返回固定的硬编码格式?
  • 如果你想让它返回你需要先设置的具体格式。 (但这让我没有任何意义)。 (CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern = "mm/dd/yyyy"
  • 不,我需要格式而不是 2012 年 12 月 21 日,我需要 2012 年 12 月 21 日
  • @simplydenis - 什么是Session["culture"],它在哪里设置?
  • 你需要澄清一点。如果你总是想要"MM/dd/yyyy',那么你可以简单地使用ToString(string format) 重载跳过CultureInfo。但是,如果您需要一些如何自定义文化的格式字符串而不完全替换它,您将需要提供更多详细信息来说明这需要什么。

标签: c# cultureinfo culture


【解决方案1】:

这并没有多大意义……您想要的模式是针对特定文化的…… 例如:

DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-US").DateTimeFormat.ShortDatePattern);

会返回mm/dd/yyyy 但是

DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-GB").DateTimeFormat.ShortDatePattern);

将返回dd/mm/yyyy

从您添加的代码来看,这不是很清楚 - 似乎您正在获得一种特定的文化,但随后想要覆盖 ShortDatePattern...

如果这是真的,为什么首先使用会话中收到的文化?在不考虑文化的情况下使用您想要的任何模式。 例如DateTime.Now.ToString("MM/dd/yyyy");

(无论如何,可以覆盖,因为可以设置ShortDatePattern,就像在cmets中显示的@mipe34)

【讨论】:

  • 你的意思是让他们俩都在美国吗?
【解决方案2】:

您可以通过在 ToString 方法中指定所需的模板来覆盖日期的显示方式:

DateTime.Now.ToString("MM/dd/yyyy")) //Will display "12/21/2012"

您似乎在使用CultureInfo 对象,该对象包含默认格式(以及货币等其他文化信息),由操作系统提供。

单独调用DateTime.Now.ToShortDateString() 将使用当前线程文化中ShortDatePattern 指定的格式,可以通过以下方式设置:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

【讨论】:

    【解决方案3】:

    您的意思是要更改属性?这很简单:

    ((CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
    

    但是,如果 CultureInfo 恰好是只读的,它将抛出运行时。在那种情况下,也许您可​​以分配一个新的CultureInfo 对象?如果可以,请这样做:

    // get reference
    var ci = (CultureInfo)Session["culture"];
    // clone and reassign to get rid of read-only:
    ci = (CultureInfo)(ci.Clone());
    // change property:
    ci.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
    // make read-only again
    ci = CultureInfo.ReadOnly(ci);
    // assign back to your "source":
    Session["culture"] = ci;
    

    之后,当人们在某个CurrentCulture 取自Session["culture"] 的新线程上调用someDateTimeValue.ToShortDateString() 时,他们将获得您的新格式。

    注意:"m""mm"分钟"M""MM"。此外,"/" 是文化的 DateSeparator(在某些文化中可能转化为破折号 (-) 或其他内容)。

    【讨论】:

      猜你喜欢
      • 2015-01-07
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2012-08-03
      • 2013-07-09
      • 1970-01-01
      相关资源
      最近更新 更多