不知道这里发生了什么.
我有一个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),原因有些奇怪.
/实际上是您特定文化的日期分隔符,可能是 - 换句话说,格式字符串不会被忽略但实际上是正确使用的.看看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);
希望这可以帮助!
您可能希望使用DateTime对象的ToString()方法来获取您所追求的字符串表示.格式字符串"dd"/"MM"/"yyyy"将为您提供所描述的格式.请注意,您需要使用单引号来转义格式字符串中的文字字符.
例: DateTime.Now.ToString("dd'/'MM'/'yyyy");