C#日期时间格式转换

时间:2012-11-22 06:31:09

标签: c# datetime

我遇到了datetime的转换问题。我的日期字符串为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 个答案:

答案 0 :(得分: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的方法,然后返回一个合适的DateTime然后
  • 否则,只需使用正确格式进行解析。

这部分问题也与我有关:

  

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

没有“yyyy-MM-dd格式的日期”这样的东西。 DateTime 只是日期和时间值。它没有固有的格式。您可以指定格式化的方式 格式化时。但是,如果您正在使用数据库查询的值,则不应再将其转换为字符串无论如何 - 您应该使用参数化SQL,并将提供为< / em> a DateTime

答案 1 :(得分:3)

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

DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
        dt.ToString("yyyy-MM-dd");

答案 2 :(得分:1)

使用内置的tostring,如下所示:

Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.

答案 3 :(得分:0)

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

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

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

希望有所帮助 Milind