1

也许这是一个 n00b 问题,但我已经查看了 .net/C# MSDN Library 和这个站点,但还没有得到一个明确的答案......说我有 For Ex:(这不完全是问题,因为我'不是创建字符串,而是从数据库中读取它们。但用于说明我正在使用的内容......)

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

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

我还有其他几种“类型”的字符串变量,我试图将它们显示为特定格式,同时将它们保存到字典中以打印到 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 类?谢谢!

4

5 回答 5

3

你可以这样做:

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

接着

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

将工作。

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

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

于 2012-06-01T15:05:51.037 回答
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

于 2012-06-01T15:04:43.283 回答
1

ToString 返回一个值而不修改原始值。

代替

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

利用

dob = dob.ToString("MM/dd/YY");
于 2012-06-01T15:00:54.597 回答
1

首先将字符串解析为一个DateTime实例(通过Parse()orTryParse()方法)。DateTime然后,您可以在实例上调用ToString(..)。

于 2012-06-01T15:01:39.010 回答
0

我建议首先将其解析为数字/日期时间,然后使用字符串格式化变量。例如,为什么这可能是必要的,请考虑您的“01/02/1990”字符串在 1 月 2 日到 2 月 1 日之间是不明确的,除非您使用DateTime.ParseExact.

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

于 2012-06-01T15:00:16.280 回答