字符串不正确的日期时间格式

时间:2015-01-27 08:15:31

标签: c# string datetime

我想将字符串转换为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

3 个答案:

答案 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设置

您的sStartDate1/3/2006,但eEndDate31/3/2006

如果可以成功解析此1/3/2006,则表示您当前的文化已d/M/yyyyM/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