DateTime.ParseExact忽略第一个字符C#

Fer*_*Fer 2 c# datetime parsing dst

string从像" 1140421164500" 这样的设备中获取值.我必须将其转换为DateTime类型.我想用DateTime.ParseExact功能.我知道我可以通过手动省略第一个字符来转换它,如下所示:

DateTime.ParseExact("140421164500", "yyMMddHHmmss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

但我想避免手动省略第一个字符.我想wildcardParseExact函数中使用char 来忽略它:

DateTime.ParseExact("1140421164500", "*yyMMddHHmmss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

让我注意,第一个char可以是1,夏令时是活动的,0是被动的.该设备也可以像" 0140101000000" 一样发送给我.

这个功能有类似的东西吗?

Son*_*nül 9

自定义日期和时间格式中没有通配符可以解析字符串中的每个可能字符.

您可以将您的格式添加到字符串的第一个字符中;

string s = "1140421164500";
Console.WriteLine(DateTime.ParseExact(s, s[0] + "yyMMddHHmmss", 
                  CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)

输出将是;

4/21/2014 4:45:00 PM
Run Code Online (Sandbox Code Playgroud)

这里一个demonstration.

  • +1 - 没有字符串操作的聪明解决方案. (2认同)