设置字符串变量的格式,其中包含要在 C# 中打印的数字/日期

本文关键字:打印 数字 日期 包含 格式 字符串 设置 变量 | 更新日期: 2023-09-27 18:36:05

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

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

可能是因为它已经是一个字符串?那么,当字符串已经是字符串时,我如何使用说明符将字符串转换为我想要的格式?我知道我可以将其转换为其他内容(例如的日期时间)并使用 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); 因为它已经是一个字符串了!有没有一种简单的方法可以做到这一点

或者需要我弄乱字符串缓冲区或字符串生成器类?谢谢!

设置字符串变量的格式,其中包含要在 C# 中打印的数字/日期

你可以做这样的事情:

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

然后

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

会工作。

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

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

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

而不是

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

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

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

使用上面提供的格式,您需要转换回 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。

我建议首先将其解析为数字/日期时间,然后使用字符串格式变量。 有关为什么需要这样做的示例,请考虑您的"01/02/1990"字符串在 1 月 2 日和 2 月 1 日之间不明确,除非您使用 DateTime.ParseExact 解析它。

我建议这样做而不是"滚动你自己的"(例如,使用 StringBuilder),以便你可以使用 .NET 的内置区分区域性的字符串格式化功能。