首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.Format (格式,日期)忽略了格式

String.Format (格式,日期)忽略了格式
EN

Stack Overflow用户
提问于 2008-11-25 16:46:22
回答 8查看 26K关注 0票数 17

不知道这是怎么回事。

我有一个DateTime对象,当我尝试:

代码语言:javascript
复制
String.Format( "{0:dd/MM/yyyy}", _date)

返回的值是:

代码语言:javascript
复制
"24-05-1967"

我想要的是

代码语言:javascript
复制
"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),原因很奇怪。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-11-25 17:07:31

实际上,/是特定区域性的日期分隔符,可以是-,换句话说,格式字符串不会被忽略,而是实际正确使用。看看CultureInfo与正在运行的线程之间的关联:

代码语言:javascript
复制
System.Threading.Thread.CurrentThread.CurrentCulture

如果你尝试这个:

代码语言:javascript
复制
String.Format(new CultureInfo("en-US"), "{0:dd/MM/yyyy}", DateTime.Now);

您将获得使用/格式化的日期,因为这是en-US的正确分隔符。您可能应该做的是使用短日期格式字符串,并确保线程具有与之相关联的适当区域性,然后这将满足您的需要,并且它也将在全球化的应用程序中工作:

代码语言:javascript
复制
DateTime.Now.ToString("d", Thread.CurrentThread.CurrentCulture);

希望这能有所帮助!

票数 24
EN

Stack Overflow用户

发布于 2008-11-25 16:57:33

您可能希望使用DateTime对象的ToString()方法来获取所追求的字符串表示形式。"dd'/'MM'/'yyyy"的格式字符串将为您提供您所描述的格式。请注意,您需要使用单引号在格式字符串中转义文字字符。

示例:DateTime.Now.ToString("dd'/'MM'/'yyyy");

票数 10
EN

Stack Overflow用户

发布于 2008-11-25 17:07:34

除非您指定IFormatProvider (通常是CultureInfo对象),否则默认情况下它将使用Thread.CurrentThread.Current区域性的日期/时间格式,这将给出更改的结果。

是的,它会改变/但不会:

在这种情况下,解决方案是指定格式提供程序,如下所示:

代码语言:javascript
复制
String.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", _date)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/318056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档