2012-06-01 49 views
1

也许这是一个n00b问题,但我已经看过.net/C#MSDN Library,并且尚未得到明确的答案... say我有防爆: (这是不准确问题,因为我没有创造的字符串,但读出来DB的,但足以说明什么,我跟...工作。)格式化字符串变量包含C#中打印的数字/日期

string dob = "01/02/1990"; 
dob.ToString("MM/dd/YY"); //however, I can't do this. compiler gives me an error... 

可能是因为它已经是一个字符串了?那么如何将字符串转换为我想要使用说明符的格式,当它已经是一个字符串? 我知道我可以将其转换为其他东西(DateTime for Ex)并使用ToString()转换回字符串...但这似乎反作用......至少对我来说

我也有其他几个字符串变量的“种类”我试图将其显示为特定的格式,同时将它们保存为一个Idictionary以便打印到pdf的字段中。 对于前:

d["amount"] = prod.sales.StringAmount; //(here StringSmount holds say 50000 (gotten from a DB), which I want to display as "50,000") 

不过,我也做不到prod.sales.StringAmount.ToString( “N”,CultureInfo.CurrentUICulture);因为它已经是一个字符串了!有没有一个简单的方法来做到这一点

或需要我弄乱字符串缓冲区或StringBuilder类? 谢谢!

+0

仅供参考您可以在字符串上调用'ToString()'没有问题 - 但为什么你会这样? – Bridge

+0

为什么不使'dob'成为'DateTime'对象,并且使用'ToString()'来隐式说明......还有你的'dob.ToString(“MM/dd/YY”)'缺少分号 –

+0

原因我在一个字符串上调用ToString():我已经将字符串字段从数据库加载到biz对象中了,而且我有*格式化它们,以便将它们很好地打印到pdf上。因此,我无法弄清楚是否有一个简单的方法来做到这一点。即:说我有: – unknownprotocol

回答

3

你可以做这样的事情:

DateTime dob = DateTime.Parse("01/02/1990"); 

然后

dob.ToString("MM/dd/YY"); 

会工作。

注意DateTime.Parse()有可能的日期时间格式接受各种选项,这也有TryParse()版本,返回false如果字符串是不是有效的日期 - 而不是不是抛出异常。还有DateTime.ParseExact()DateTime.TryParseExact()变化。

对日期时间以外的其他数据类型使用相同的方法:首先使用各种Parse()TryParse()方法将输入字符串转换为正确的数据类型(整数,浮点数等),然后格式化此转换的结果。

0

我建议先解析成数字/日期时间,然后使用字符串格式化变量。举一个为什么这可能是必要的例子,考虑你的“01/02/1990”字符串在1月2日和2月1日之间是不明确的,除非你用DateTime.ParseExact解析它。

我推荐通过'滚动你自己的'(例如使用StringBuilder),这样你就可以使用内置的文化敏感的字符串格式化.NET的能力。

1

ToString在不修改原始的情况下返回一个值。

代替

dob.ToString("MM/dd/YY"); 

使用

dob = dob.ToString("MM/dd/YY"); 
+0

这似乎给我一个错误,当我尝试它...关于IFormatProvider错了......'“Arguemnt类型'字符串'不可分配给参数类型'System.IFormatProvider' – unknownprotocol

1

首先分析字符串为DateTime实例(通过Parse()TryParse()方法)。在DateTime实例上,然后可以拨打ToString(..)。

1

使用上面提供的格式,您需要转换回DateTime才能使用.ToString(“MM/dd/YY”)格式。 ToString的原因是用于将对象/值转换为字符串表示形式,并且DateTime对象足以接受格式。

如果你想格式化已经是一个字符串,那么你应该使用String.Format。访问此链接:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx。此链接显示标准数字格式器。

您可能还想创建自己的字符串格式。看看IFormatProvider和ICustomFormatter:http://msdn.microsoft.com/en-us/library/system.icustomformatter.aspx