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

本文关键字:141104 2014年 日期 字符串 转换 | 更新日期: 2023-09-27 18:36:34

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

问题是当转换(例如)"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)));

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

因为构造函数DateTime(Int32, Int32, Int32)确切的年份作为第一个参数。不是两位数的表示形式。

这就是为什么你的代码等效于

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
}

"yy"说明符将年份表示为两位数。这个说明符基于您当前日历的属性Calendar.TwoDigitYearMax在我的示例中是公历,因为我使用 InvariantCulture 作为IFormatProvider

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

 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方法。

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);