c#中转换的日期格式

时间:2011-11-29 08:10:48

标签: c# .net datetime datetime-parsing

有没有人可以告诉我这个'1110620'是什么类型的日期格式?我怎样才能将其转换为'yyyy-MM-dd'格式。任何帮助都非常感谢。谢谢!

4 个答案:

答案 0 :(得分:2)

DateTime d;
if (DateTime.TryParse("1110620", CultureInfo.InvariantCulture, DateTimeStyles.None, out d))
    string r = d.ToString("yyyy-MM-dd");
else
    throw new Exception();

答案 1 :(得分:1)

这应该有效:

string dt = "1110620";
DateTime dt = DateTime.ParseExact(dt, "yyyMMdd", 
                                  CultureInfo.CultureInvariant);

或者你可以尝试(不优雅但有效)

        int start = dt.Length - 4;
        DateTime d = new DateTime(
            int.Parse(dt.Substring(0, start)),
            int.Parse(dt.Substring(start, 2)),
            int.Parse(dt.Substring(2 + start, 2)));

答案 2 :(得分:0)

以上格式似乎是 - yyyMMdd。你可以编写c#方法来相应地转换它。有关详细信息,请参阅MSDN

答案 3 :(得分:0)

我的猜测是前三位是两位数年份的延伸。其中100对应于2000年。

因此,格式最初是yyMMdd,或者可能是(year-1900)*10000+month*100+day,它通过为1添加前缀,在逻辑上延伸到2000年后的数字。这也保留了整数排序顺序。

所以要解析它你可以:

day=input%100;
month=input/100%100;
year=input/10000+1900;

使用此公式1110620对应2011-06-20

但除非你解释你的例子应该是什么意思,否则这只是推测。


我的第一个猜测是它可能是某个日期以来的几天,但这会使原点在公元前1000年左右,这是不可能的。