2011-03-28 47 views
7

我通过向DateTime.ToString方法提供文化信息来显示本地化的短日期。现在我正在使用DateTime.ToString格式

x.ToString("d", ci); // 23.12.2000 

显示短日期。但现在我想还包括缩写的日期名称。我试图

x.ToString("ddd d", ci); // pon 23 

但现在d成为天符,而不是短日期格式所以不是一天名称和短日期我只得到一天名称和日数。

我该如何说服格式化工来显示预定义的文化短日期格式?

回答

9

如何:

string.Format(ci, "{0:ddd} {0:d}", x) 
+1

不应该是格式的“{0:ddd d}”吗? – Manatherin 2011-03-28 10:28:07

+3

不是,它不会工作,因为它会返回,引用罗伯特“pon 23”而不是“pon 23.12.2000” – 2011-03-28 10:29:14

+0

@ Manatherin,不,这将有与原始问题中的示例完全相同的问题。我更喜欢我的方法,但克里斯托弗也简洁地解决了这个问题。 – 2011-03-28 10:31:47

0

看看这样的解释:

http://www.csharp-examples.net/string-format-datetime/

也许你可以找到一些例子在那里。

更新

作为回应的意见,实施例3中第一个代码块中明确规定如何做到这一点:

String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day 

Google一份关于日期字符串格式化的问题,达不到这个问题如果有一个很好的例子,那么它将会更有价值。因此引用了csharp-examples网站。

+1

同样来自谷歌的第一个结果复制/粘贴不方便。不要认为这是值得的。答案是不正确的,或错过了问题。 – 2011-03-28 10:19:13

+2

我认为你错过了一个观点,问题是如何在文化特定格式中显示“ddd”,然后显示完整的短日期。您的代码示例不会执行此操作。 – 2011-03-28 10:28:02

+0

更新的答案给出了完全错误的答案。它甚至评论了一个明显错误的例子输出。在给出的链接中没有一个例子可以回答这个问题。答案是不正确的,并且错过了这个问题。 – 2011-03-28 10:30:05

1
x.ToString("ddd ", ci) + x.ToString("d", ci); 
+0

是的。这是我在这里得到一个很好的答案之前所做的。 – 2011-03-28 11:55:21

0

如果没有别的,你可以:x.ToString("ddd", ci) + " " + x.ToString("d", ci);

4

“标准”格式的字符串通过获取CultureInfoDateTimeFormat相当于物业工作。在这种情况下,"d"找到ShortDatePattern属性,该属性将类似于“dd.MM.yyyy”,“dd/MM/yyyy”,“MM/dd/yyyy”,“yyyy-MM-dd”等,具体取决于在有问题的地区。

因此,你可以利用它在一个自定义模式,像这样:

x.ToString("ddd " + ci.DateTimeFormat.ShortDatePattern, ci) // Sat 2000-12-23 on my set up, should presumably be pon 23.12.2000 on yours 
+0

+1完全教会了我新的东西。我会用String.Format。很高兴学习替代品。 – Kamal 2011-03-28 10:36:25

+0

根据@Kristoffer的说法String.Format Jansson的回答是对同一只猫进行皮肤处理的一种很好的方法,尽管上面的方法可以处理一些更复杂的情况,您希望将字符串从一个地方传递到ToString( )调用另一个(因此不能从ToString()更改为String.Format())。是的,它*很高兴知道标准格式如何工作:) – 2011-03-28 10:42:54

+0

+1:尼斯方法@Jon Hanna。 – 2011-03-28 11:54:48

相关问题