如何通过文化获得完整的短期约会

时间:2012-12-21 16:45:43

标签: c# cultureinfo culture

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

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

3 个答案:

答案 0 :(得分: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可以设置,就像评论中显示的@ mipe34一样)

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

你的意思是你想改变房产?这很简单:

((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;

之后,当人们在某个someDateTimeValue.ToShortDateString()来自CurrentCulture的新帖子上致电Session["culture"]时,他们会获得您的新格式。

注意:"m""mm" 分钟"M""MM" 。此外"/"是文化的DateSeparator(在某些文化中可能会转换为短划线(-)或其他内容。)