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

C# 日期转换不适用于我的系统日期时间,c#,.net,C#,.net,我的系统日期为mm/dd/yyyy格式,我的代码将日期转换为dd/mm/yyyy格式。现在我想要yyyy/mm/dd格式的日期,以便在数据库的表中进行更新。我正在尝试: string d = Convert.ToDateTime(FromDate).ToString("yyyy/MM/dd"); 但是它返回:yyyy/dd/mm。您应该使用原始格式转换为DateTime,然后将其转换为所需的格式。像这样: string FromDate = "12/13/2016"; string origi

我的系统日期为mm/dd/yyyy格式,我的代码将日期转换为dd/mm/yyyy格式。现在我想要yyyy/mm/dd格式的日期,以便在数据库的表中进行更新。我正在尝试:

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

但是它返回:yyyy/dd/mm。

您应该使用原始格式转换为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);
使用DateTime.TryParseExact,您将使其正常工作。让日期为格式为MM/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
}

你应该使用DateTime.parseExactor,你能给我看一下吗?i、 e.我可以复制、粘贴和运行的代码,以演示问题?FromDate的值是多少?与其摆弄字符串,不如将数据放入DateTime变量中,并从那时起继续使用这些变量。假定SQL Server使用适当的datetime数据类型,则依赖ADO.Net来转换这些值。只要避免使用字符串,您就不必考虑FromDate=10/07/2016 i.i dd/mm/yyyy格式中的formats.value。如果转换失败会发生什么情况?@unLucky用户说他有一个日期是指定的格式。他没有说他有一个未知的格式,他必须检查它是否是某种格式。如果我对格式有100%的把握,我不会使用TryParse。但是作为一名开发人员,你应该关心Exceptions@un-幸运的是,当异常发生时,我关心异常。这个问题不是这样的。@user3185569-我们不知道输入实际上是什么样子的。OP没有说。所以很好的异常预防应该在这里进行,IMHO。From date是dd/mm/yyyy格式,我只想要yyyy/mm/dd格式,但它显示错误字符串未被识别为有效的日期时间。@RahulSoni:哪一行给出了错误?FromDate=10/07/2016 ToDate=18/07/2016字符串d=Convert.ToDateTimeFromDate.ToString YYY/MM/dd;给出:2016/10/07字符串dd=Convert.ToDateTimeToDate.ToString YYY/MM/dd给出:如果我使用字符串d=Convert.ToDateTimeFromDate.ToString YYY/dd/MM,则出现错误;给出:2016/07/10字符串dd=Convert.ToDateTimeToDate.ToString YYY/dd/MM;我的答案中是否有Convert.ToDateTime?你还在运行你的代码吗?你为什么不试试提供的答案呢?