1

我有日期时间的转换问题。我有一个日期字符串作为MM/dd/yyyy. 现在我需要将其转换为yyyy-MM-dd.

但我面临一些错误。请帮忙

 public static DateTime ToDBDateTime(string _dateTime)
 {
        string sysFormat = "MM/dd/yyyy hh:mm:ss tt";

        string _convertedDate = string.Empty;

        if (_dateTime != null || _dateTime != string.Empty)
        {
            _convertedDate = DateTime.ParseExact(_dateTime, sysFormat, System.Globalization.CultureInfo.InvariantCulture).ToString(_toDBDateFormat);
            //_convertedDate = Convert.ToDateTime(_dateTime).ToString(_toDBDateFormat);
           /// Debug.Print(sysFormat);
        }

        return Convert.ToDateTime(_convertedDate);
    }

而且我想知道有没有办法以datetime各种格式传递它,它会返回预期的格式。

例如:如果我将日期传递为dd/MM/yyyyMM/dd/yyyy,则上述函数将返回格式为 的日期yyyy-MM-dd

请提供一些解决datetime问题的建议。

4

4 回答 4

4

我有一个日期字符串为 MM/dd/yyyy

对......但你正试图像这样解析它:

string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
                                     CultureInfo.InvariantCulture)

您需要提供与您的输入相匹配的格式字符串 - 那么为什么要包含时间部分?你可能只想:

string sysFormat = "MM/dd/yyyy";

然而,这并不是问题的结束。然后,您将其转换DateTime 这样的字符串:

.ToString(_toDBDateFormat)

...并再次解析它:

return Convert.ToDateTime(_convertedDate);

你到底为什么要这么做?您应该尽可能避免字符串转换。除了别的,还有什么说_toDBDateFormat(一个引起我怀疑的变量名)和Convert.ToDateTime(它总是使用当前的文化进行解析)将是兼容的?

你应该:

  • 弄清楚你想如何处理给定一个空字符串或 null,然后返回一个适当的DateTimethen
  • 否则,只需使用正确的格式进行解析。

您的这部分问题也与我有关:

例如:如果我将日期传递为 dd/MM/yyyy 或 MM/dd/yyyy,则上述函数将以 yyyy-MM-dd 格式返回日期。

没有“格式为 yyyy-MM-dd 的日期”之类的东西。ADateTime只是一个日期和时间值。它没有内在格式。您在格式化时指定要如何格式化。但是,如果您将该值用于数据库查询,则无论如何都不应该将其再次转换为字符串- 您应该使用参数化 SQL,并将其作为DateTime.

于 2012-11-22T06:46:08.240 回答
3

由于您在格式为“MM/dd/yyyy”的字符串中有一个日期,并且想要将其转换为“yyyy-MM-dd”,您可以这样做:

DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
        dt.ToString("yyyy-MM-dd");
于 2012-11-22T06:34:15.947 回答
1

像这样使用内置的 tostring:

Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
于 2012-11-22T06:35:27.427 回答
0

我试过这个并且它工作正常。

DateTime date1 = new DateTime(2009, 8, 1);
date1.ToString("yyyy-MM-dd hh:mm:ss tt");

您可以在此 ToString 中应用任何格式。

希望对米林有帮助

于 2012-11-22T06:34:54.663 回答