C#:如何获取MM / DD / YYYY的日期字符串并将其转换为YYYY-MM-DD

时间:2012-08-01 20:09:39

标签: c#

  

可能重复:
  changing date format from dd/MM/yyyy to MM/dd/yyyy

我有一个字符串字段,其日期显示为MM / DD / YYYY,但我需要它为YYYY-MM-DD。

以下是它的样子:

DateReported = (e.Attribute("hciIIDateReported")

我想也许我可以做一个string.Format()但我找不到只提供YYYY-MM-DD的自定义日期和时间格式字符串。我找到的那种格式带有时间,这是行不通的。有什么建议吗?

6 个答案:

答案 0 :(得分:1)

您可以先解析它:

DateTime datetime = DateTime.Parse("01/01/2012");

如果您未使用英国语言​​环境,则需要添加:

DateTime datetime = DateTime.Parse("01/01/2012", new CultureInfo("en-GB"));

然后吐出来

string output = datetime.ToString("yyyy-MM-dd");

答案 1 :(得分:1)

尝试DateTime.ParseExact(yourDateString, "MM/dd/yyyy", null).ToString("yyyy-MM-dd")

评论后

编辑

DateTime.ParseExact(yourDateString, @"MM\/dd\/yyyy", null).ToString("yyyy-MM-dd")

我忘了斜杠(/)在日期格式字符串中有特殊含义。现在它已经逃脱了,这似乎有效。我试过了。

但是,使用CultureInfo.InvariantCulture作为“提供者”而不是当前文化(使用null得到的)更安全。然后人们不必担心存在一些结果不同的异国文化。

答案 2 :(得分:0)

DateReported.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);

编辑:假设DateReported的类型为DateTime。

答案 3 :(得分:0)

以下是MSDN自定义格式字符串的链接; http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.71).aspx

现在,如果你可以建立自己的:

DateTime.Now.ToString("yyyy-MM-dd");

在您的情况下,如果您想打印出DateReported,这将是:

Console.WriteLine(DateReported.ToString("yyyy-MM-dd"));

答案 4 :(得分:0)

这肯定有效

string DateReported = DateTime.ParseExact(e.Attribute("hciIIDateReported"), "MM/dd/yyyy", null).ToString("yyyy-MM-dd");

答案 5 :(得分:-3)

如果您只有该字段,字符串处理可能是最直接的方式:

string processDate(string inputDate) // inputdate is like "02/05/1995"
{
    string [] fields = inputdate.Split('/');
    return string.Format("{0}-{1}-{2}", fields[2], fields[0], fields[1]);
}

我认为那会奏效。如果你可以先将它转换为DateTime,其他一些答案也可以。