将异常字符串转换为日期时间

Blu*_*ppy 0 c# string datetime

我有一个系统以"1 {yy} {MM} {dd}"的格式输出日期,我试图找到一种好的方法将其解析回实际日期.目前我正在使用这个:

  var value = "1110825";
  var z = Enumerable.Range(1,3).Select(i => int.Parse(value.Substring(i, 2))).ToList();
  var d = new DateTime(2000 + z[0], z[1], z[2]);
Run Code Online (Sandbox Code Playgroud)

但我确定有更清洁/更有效的方法吗?

我已经尝试过DT.ParseExact,但找不到合适的格式字符串来使用.

Jon*_*eet 9

这对我有用:

using System;
using System.Globalization;

public class Test
{
    static void Main()
    {
        var value = "1110825";
        DateTime dt = DateTime.ParseExact(value, "1yyMMdd",
                                          CultureInfo.InvariantCulture);
        Console.WriteLine(dt);
    }
}
Run Code Online (Sandbox Code Playgroud)

(TryParseExact当然,如果您需要以除异常之外的任何方式处理无效数据,您可能希望使用.)

稍微变化的是"'1'yyMMdd"的格式模式 - 注意围绕1的撇号.引用1强制它被视为模式中的"文字".在这种情况下这并不重要,但是如果你实际上有"y110825"这样的值,那么你想引用它y以确保它不被视为年份说明符的一部分.