也许这是一个n00b问题,但是我已经查看了.net / C#MSDN Library并且在这个网站上还没有得出一个明确的答案...说我有For For: (这不是完全问题,因为我没有创建字符串,而是从数据库中读取它们。但是用来说明我正在使用的...)
string dob = "01/02/1990";
dob.ToString("MM/dd/YY"); //however, I can't do this. compiler gives me an error...
可能因为它已经是一个字符串了?那么当它已经是一个字符串时,我怎么能用字符串把字符串变成我想要的格式呢? 我知道我可以将它转换为其他东西(ExTime的日期时间)并使用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);因为它已经是一个字符串!有没有简单的方法来做到这一点
还是需要我搞乱String Buffers或StringBuilder类? 谢谢!
答案 0 :(得分:3)
您可以这样做:
DateTime dob = DateTime.Parse("01/02/1990");
然后
dob.ToString("MM/dd/YY");
会奏效。
请注意DateTime.Parse()
有多种选项可供接受的日期时间格式使用,如果字符串不是有效日期,还会有TryParse()
版本返回false
- 而不是抛出异常。还有DateTime.ParseExact()
和DateTime.TryParseExact()
种变体。
对日期时间旁边的其他数据类型使用相同的方法:首先使用各种Parse()
或TryParse()
方法将输入字符串转换为正确的数据类型(整数,浮点等),以及然后格式化此转换的结果。
答案 1 :(得分:1)
ToString返回一个值而不修改原始值。
而不是
dob.ToString("MM/dd/YY");
使用
dob = dob.ToString("MM/dd/YY");
答案 2 :(得分:1)
首先将字符串解析为DateTime
实例(通过Parse()
或TryParse()
方法)。在DateTime
实例上,您可以调用ToString
(..)。
答案 3 :(得分: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。
答案 4 :(得分:0)
我建议先将其解析为数字/ DateTime,然后使用字符串格式化变量。有关为什么需要这样做的示例,请考虑您的“01/02/1990”字符串在1月2日到2月1日之间不明确,除非您使用DateTime.ParseExact
解析它。
我推荐这个'滚动你自己'(例如使用StringBuilder),这样你就可以使用.NET的内置文化敏感字符串格式化功能。