C# 零填充日期字符串而不转换为其他类型

C# 零填充日期字符串而不转换为其他类型,c#,string,C#,String,我有好几个字符串形式的日期。我想确保他们的格式是09/08/2012,即使他们是以9/8/2012的形式出现的 我知道我可以将它们转换为DateTime对象,然后再转换回字符串,并以这种方式格式化它们。这个问题来自好奇心,而不是必然性。 我想知道是否有一种不用数据转换就能做到这一点的方法。我的猜测是,如果可能的话,它将使用string.Format()方法 是否可以将零填充日期格式应用于字符串而不更改其类型作为过程的一部分?好的,您也可以将字符串拆分为“/”字符,如果检查结果数组中的第一个字符串

我有好几个字符串形式的日期。我想确保他们的格式是
09/08/2012
,即使他们是以
9/8/2012
的形式出现的

我知道我可以将它们转换为DateTime对象,然后再转换回字符串,并以这种方式格式化它们。这个问题来自好奇心,而不是必然性。
我想知道是否有一种不用数据转换就能做到这一点的方法。我的猜测是,如果可能的话,它将使用
string.Format()
方法


是否可以将零填充日期格式应用于字符串而不更改其类型作为过程的一部分?

好的,您也可以将字符串拆分为“/”字符,如果检查结果数组中的第一个字符串是否只有1个字符,如果是,则将0添加到前面。

这很容易做到

  • /
    上拆分字符串
  • 左键将每个部分填充为2位数字,根据需要在前面加上“0”
  • 把绳子的各个部分重新连接起来
  • 代码:


    这更容易理解。

    使用的唯一数据类型是字符串

    var x = "09/7/2017";
    var y = x[1] == '/' && x[3] == '/' ? new string(new [] { '0', x[0], x[1], '0', x[2], x[3], x[4], x[5], x[6], x[7] }) 
          : x[1] == '/' && x[4] == '/' ? new string(new [] { '0', x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8] })
          : x[2] == '/' && x[4] == '/' ? new string(new [] { x[0], x[1], x[2], '0', x[3], x[4], x[5], x[6], x[7], x[8] })
          : x[2] == '/' && x[5] == '/' ? x
          : x;
    

    我编辑了你的问题,将“是/否”问题删除为更开放的问题。问一个“是/否”的问题会立即回避“好的,怎么做?”的问题,只需跳过这一步,问怎么做。我问题的最初措辞不够具体。我向那些已经回答误导你的人道歉。我编辑了我的问题,试图让我的真实意图更加清晰。请定义你所说的“中间步骤”是什么意思,以及我的回答如何不能回答你的问题?@Amy中间步骤将是任何不能返回所需最终输出的步骤。您的答案将字符串转换为一个数组,该数组在转换回字符串之前经过处理。转换为数组是这种情况下的中间步骤。@Amy就像我说的,很抱歉我的问题的原始形式不清楚,但是格式化字符串而不更改其类型始终是问题的核心。
    var x = "9/7/2017";
    var z = DateTime.Parse(x).ToString("MM/dd/yyyy");
    
    var x = "09/7/2017";
    var y = x[1] == '/' && x[3] == '/' ? new string(new [] { '0', x[0], x[1], '0', x[2], x[3], x[4], x[5], x[6], x[7] }) 
          : x[1] == '/' && x[4] == '/' ? new string(new [] { '0', x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8] })
          : x[2] == '/' && x[4] == '/' ? new string(new [] { x[0], x[1], x[2], '0', x[3], x[4], x[5], x[6], x[7], x[8] })
          : x[2] == '/' && x[5] == '/' ? x
          : x;