如何将字符串转换为日期“141104”与2014年
本文关键字:141104 2014年 日期 字符串 转换 | 更新日期: 2023-09-27 18:36:34
我有字符串,想要转换为日期。
问题是当转换(例如)"141104"
==>时,它将"04/11/0014"
我将如何解决0014
年2014
?
我用了:
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)));
因为构造函数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);