Поскольку DateTime(Int32, Int32, Int32)
constructor принимает точного года в качестве первого параметра. Это не двузначное представление.
Вот почему ваш код эквивалентен
new DateTime(14, 11, 04);
не
new DateTime(2014, 11, 04);
Вообще, разделив вашу строку и использование этих частей в DateTime
конструктор не является хорошей идеей. По крайней мере, мне это не нравится.
Вы можете использовать собственный формат форматирования даты и времени, если yyMMdd
не является стандартным форматом даты и времени вашей культуры;
string s = "141104";
DateTime EntranceDeclaratioDate;
if(DateTime.TryParseExact(s, "yyMMdd", CultureInfo.InvariantCulture,
DateTimeStyles.None,
out EntranceDeclaratioDate))
{
// Successfull parsing, now EntranceDeclaratioDate is 04/11/2014 00:00:00
}
The "yy"
specifier представляет год в виде двузначного числа. И этот спецификатор основан на Calendar.TwoDigitYearMax
property вашего текущего календаря, который является Gregorian Calendar в моем примере, так как я использовал InvariantCulture
как IFormatProvider
.
[ 'DateTime.Parse'] (http://msdn.microsoft.com/en-us/library/1k1skd40%28v=vs.110%29.aspx)? – Sayse