如何将字符串转换为日期“141104”与2014年?

时间:2015-01-06 07:38:07

标签: c# string datetime

我有字符串,想要转换为日期。

问题出在转换时(例如)"141104" ==>它将是"04/11/0014" 我将如何解决00142014

我用过:

DateTime EntranceDeclaratioDate = new DateTime(int.Parse(outputDueNo.ThirdPart.Substring(0, 2)), int.Parse(outputDueNo.ThirdPart.Substring(2, 2)), int.Parse(outputDueNo.ThirdPart.Substring(4, 2)));

3 个答案:

答案 0 :(得分:1)

因为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

答案 1 :(得分:0)

使用您的方法,可以通过以下添加来更正年份。

 DateTime EntranceDeclaratioDate
   = new DateTime(int.Parse(outputDueNo.ThirdPart.Substring(0, 2)) + 2000,
                  int.Parse(outputDueNo.ThirdPart.Substring(2, 2)),
                  int.Parse(outputDueNo.ThirdPart.Substring(4, 2)));

但是,我强烈推荐上述评论,并建议使用DateTime.Parse方法。

答案 2 :(得分:0)

string outputDueNo = "141104";
char[] st = new char[6];
st=outputDueNo.ToCharArray();

string date = st[4].ToString() + st[5].ToString() + "/" + st[2].ToString() + st[3].ToString() + "/" + "20" + st[0].ToString() + st[1].ToString();      
DateTime ds = Convert.ToDateTime(date);