C# 如何用零格式化或填充字符串日期?

C# 如何用零格式化或填充字符串日期?,c#,string,datetime,C#,String,Datetime,我有如下格式的日期值:1/1/2015。 这些是由我无法更改的Web服务生成的: 如何设置格式:1/1/2015到01/01/2015,前导为零 我试过这个: Console.WriteLine(String.Format("{0:[##/##/####]}", "1/1/2015")); 这是: Console.WriteLine(String.Format("{0:MM/dd/yyyy}", "1/1/2015")); 但是我得到了相同的格式化输出。您可以这样尝试: return you

我有如下格式的日期值:
1/1/2015
。 这些是由我无法更改的Web服务生成的:

如何设置格式:
1/1/2015
01/01/2015
,前导为零

我试过这个:

Console.WriteLine(String.Format("{0:[##/##/####]}", "1/1/2015"));
这是:

Console.WriteLine(String.Format("{0:MM/dd/yyyy}", "1/1/2015"));
但是我得到了相同的格式化输出。

您可以这样尝试:

return yourDateTimeValue.ToString("MM/dd/yyyy");
string s = "1/1/2015";
DateTime dt = 
    DateTime.ParseExact(s, "MM/dd/yyyy", CultureInfo.InvariantCulture);
编辑:

由于您将日期存储为字符串,请尝试以下操作:

return yourDateTimeValue.ToString("MM/dd/yyyy");
string s = "1/1/2015";
DateTime dt = 
    DateTime.ParseExact(s, "MM/dd/yyyy", CultureInfo.InvariantCulture);
我有如下格式的日期值

在.NET中,a没有任何隐式格式。它只有日期和时间值。
DateTime
的文本表示(也称为字符串表示)可以有一种格式

如果您有这样的字符串,请将其解析为
Datetime
,并使用
dd/MM/yyyy
格式获取其字符串表示形式

string s = "1/1/2015";
DateTime dt;
if(DateTime.TryParseExact(s, "d/M/yyyy", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture).Dump(); // 01/01/2015
}

将日期字符串转换为
DateTime
,然后将其转换为
MM/dd/yyyy
或任何您想要的格式

DateTime.Parse("1/1/2015").ToString("MM/dd/yyyy");

“1/1/2015”
是一个
字符串
,而不是
日期时间
。谢谢大家!我假设不使用
TryParseExact
就无法格式化值?
TryParseExact
不会影响格式。传入的格式是正在分析的字符串的当前格式。一旦有了
DateTime
对象,就可以使用
ToString
@UnaverageGuy
TryParseExact
的重载对其进行格式化。它使用特定的格式和区域性设置将
字符串
解析为
日期时间
。您也可以使用
ParseExact
方法。您甚至可以使用一些字符串方法将字符串拆分为
/
,并将第一项和第二项
0
添加为前导项。但这会很难看(或者不是最好的方法),因为字符串是解析
DateTime
的完美候选。
dd
MM
格式说明符使用前导零获取天数和月份数
ToString
method get对具有特定区域性的
DateTime
的格式化字符串表示形式。@UnaverageGuy-您可以按日期分割器分割
字符串,检查每个部分的长度,如果小于两个,则在前面加一个零。但老实说,你为什么不想尽快使用合适的数据类型(
DateTime
)呢?@Corak:好的,我只是在寻找替代方法,以便我能够理解并更好地决定如何处理这个问题:我在看
Format.String()
因为我已经以
字符串的形式获取了数据。
但是你的观点是正确的。小心点。如果不提供任何
IFormatProvider
,您的
MM/dd/yyyy
格式可能无法生成相同的输出。