不知道这是怎么回事。
我有一个DateTime对象,当我尝试:
String.Format( "{0:dd/MM/yyyy}", _date)返回的值是:
"24-05-1967"我想要的是
"24/05/1967"有人能解释为什么我的格式字符串被忽略了吗?
更多的背景:这是一个网络应用程序,从.net 1.1开始,我正在将它提升到2.0/3.5。
更新:
如果我将格式更改为{0:dd:MM:yyyy},它将返回24:05:1967 -只有/在格式字符串中被更改为- char。
解决方案:
当将应用程序更新到2.0下运行时,asp.net全球化设置就被搞砸了。
从网站属性中,ASP.NET选项卡、编辑配置、应用程序选项卡-区域性和UI文化都被设置为列表中的第一项(af-ZA),原因很奇怪。
发布于 2008-11-25 17:07:31
实际上,/是特定区域性的日期分隔符,可以是-,换句话说,格式字符串不会被忽略,而是实际正确使用。看看CultureInfo与正在运行的线程之间的关联:
System.Threading.Thread.CurrentThread.CurrentCulture如果你尝试这个:
String.Format(new CultureInfo("en-US"), "{0:dd/MM/yyyy}", DateTime.Now);您将获得使用/格式化的日期,因为这是en-US的正确分隔符。您可能应该做的是使用短日期格式字符串,并确保线程具有与之相关联的适当区域性,然后这将满足您的需要,并且它也将在全球化的应用程序中工作:
DateTime.Now.ToString("d", Thread.CurrentThread.CurrentCulture);希望这能有所帮助!
发布于 2008-11-25 16:57:33
您可能希望使用DateTime对象的ToString()方法来获取所追求的字符串表示形式。"dd'/'MM'/'yyyy"的格式字符串将为您提供您所描述的格式。请注意,您需要使用单引号在格式字符串中转义文字字符。
示例:DateTime.Now.ToString("dd'/'MM'/'yyyy");
发布于 2008-11-25 17:07:34
除非您指定IFormatProvider (通常是CultureInfo对象),否则默认情况下它将使用Thread.CurrentThread.Current区域性的日期/时间格式,这将给出更改的结果。
是的,它会改变/但不会:
在这种情况下,解决方案是指定格式提供程序,如下所示:
String.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", _date)https://stackoverflow.com/questions/318056
复制相似问题