我有一个字符串字段,其日期显示为MM / DD / YYYY,但我需要它为YYYY-MM-DD。
以下是它的样子:
DateReported = (e.Attribute("hciIIDateReported")
我想也许我可以做一个string.Format()但我找不到只提供YYYY-MM-DD的自定义日期和时间格式字符串。我找到的那种格式带有时间,这是行不通的。有什么建议吗?
答案 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,其他一些答案也可以。