我有字符串,想要转换为日期。
问题出在转换时(例如)"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)));
答案 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);