日期转换不适用于我的系统日期时间

时间:2016-07-18 06:38:50

标签: c# .net

我的系统日期采用mm/dd/yyyy格式,我的代码将日期转换为dd/mm/yyyy格式。现在我希望以yyyy/mm/dd格式的日期更新数据库中的表。我正在尝试:

string d = Convert.ToDateTime(FromDate).ToString("yyyy/MM/dd");

但它返回:yyyy/dd/mm

2 个答案:

答案 0 :(得分:1)

您应该使用原始格式转换为DateTime,然后将其转换为所需的格式。像这样:

string FromDate = "12/13/2016";
string originalFormat = "MM/dd/yyyy";
string expectedFormat = "yyyy/MM/dd";
string d = DateTime.ParseExact(FromDate, originalFormat, CultureInfo.CurrentCulture)
                    .ToString(expectedFormat);

Console.WriteLine(d);

如果您对输入的格式不确定,可以采用这种安全的逻辑:

string FromDate = "12/13/2016";
string originalFormat = "MM/dd/yyyy";
string expectedFormat = "yyyy/MM/dd";

DateTime convertedDate;
string expectedDate = null;
if (DateTime.TryParseExact(FromDate, originalFormat, CultureInfo.CurrentCulture,
                                    DateTimeStyles.AssumeLocal, out convertedDate))
{
    expectedDate = convertedDate.ToString(expectedFormat);
}
else
{
    // handle format errors.
}

Console.WriteLine(expectedDate);

答案 1 :(得分:1)

使用DateTime.TryParseExact您将获得它的效果。设FromDateMM/dd/yyyy格式的日期,所需的格式字符串为"yyyy/MM/dd",请考虑代码:

string FromDateString ="07/18/2016";
string fromStringFormat= "MM/dd/yyyy";
DateTime FromDate;
if(DateTime.TryParseExact(FromDateString, fromStringFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out FromDate))
{
   string requiredString= FromDate.ToString("yyyy/MM/dd");
   // Continue coding
}
else
{
  // Conversion failed
}

Here is working Example