我想将字符串转换为DateTime,但是我收到以下错误。
字符串未被识别为有效的DateTime。
int firstDayOfMonth = 1;
int lastDayOfMonth = 31;
int month = 3;
int year = 2006;
string sStartDate = string.Format("{0}/{1}/{2}", firstDayOfMonth, month, year);
string eEndDate = string.Format("{0}/{1}/{2}", lastDayOfMonth, month, year);
//This one works
DateTime sDate = Convert.ToDateTime(startDate, CultureInfo.CurrentCulture.DateTimeFormat);
//This one doesnt work
DateTime eDate = Convert.ToDateTime(eEndDate, CultureInfo.CurrentCulture.DateTimeFormat);
然后我尝试了这个
DateTime date = new DateTime(year, month, lastDayOfYear);
但是它给了我3/1/2006
,但我需要dd/MM/yyyy
如何将字符串转换为dd/MMyyyy
?
答案 0 :(得分:8)
为什么不使用DateTime
构造函数而不是DateTime.Parse
?
DateTime sDate = new DateTime(year, month, firstDayOfMonth);
如何将字符串转换为dd / MM / yyyy
您可以使用正确的格式字符串将DateTime
转发至string
,将InvariantCulture
转发至prevent that /
gets replaced by the actual date separator of your culture。
string sStartDate = sDate.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
答案 1 :(得分:2)
如果您需要使用特定格式将字符串转换为日期,则可以使用DateTime.ParseExact
,例如以下示例
DateTime dt = DateTime.ParseExact("9/1/2009", "M/d/yyyy",
CultureInfo.InvariantCulture);
答案 2 :(得分:1)
Convert.ToDateTime
method默认使用您的CurrentCulture
设置 。
您的sStartDate
为1/3/2006
,但eEndDate
为31/3/2006
。
如果可以成功解析此1/3/2006
,则表示您当前的文化已d/M/yyyy
或M/d/yyyy
(当前文化date separator当然为{{3}但是没有dd/M/yyyy
格式。
您可以找到CurrentCulture
的所有标准日期和时间格式;
foreach (var format in CultureInfo.CurrentCulture.
DateTimeFormat.
GetAllDateTimePatterns())
{
Console.WriteLine(format);
}
除此之外,我同意所有standard date and time format。