1

我有一个代表日期的字符串(mysql数据库日期时间)我想将它转换为自定义格式,如MMMM d ,YYYY

例如。将 2012 年 11 月 1 日凌晨 3:42:09 转换为 2012 年 11 月 1 日

4

4 回答 4

5

由于您希望将 11 月作为月份,您可以使用DateTime.ParseExact并稍后使用格式化日期.ToString

string str = "11/1/2012 3:42:09 AM";
DateTime dt = DateTime.ParseExact(str, "MM/d/yyyy h:mm:ss tt",CultureInfo.InvariantCulture);
string formattedDateStr = dt.ToString("MMMMM d, yyyy");

编辑:(来自@Martin Liversage的评论

//To ignore regional settings. 
string formattedDateStr = dt.ToString("MMMMM d, yyyy",CultureInfo.InvariantCulture);
于 2012-11-01T11:23:08.680 回答
3

试试这个 SELECT DATENAME(MM, GETDATE()) + RIGHT(CONVERT(VARCHAR(12), GETDATE(), 107), 9) AS [Month DD, YYYY]

于 2012-11-01T11:29:36.513 回答
2

Parse它变成一个DateTime对象,然后调用ToString

string myDate = "11/1/2012 3:42:09 AM";
string formatted = DateTime.Parse(myDate).ToString("MMMM d ,yyyy");

请注意,如果您所在的机器与myDate(例如,您有将日期放在首位的欧洲日期格式)的文化不同,您也可以使用以下命令指定输入格式ParseExact

string formatted = DateTime.ParseExact(myDate, "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture).ToString("MMMM d ,yyyy");
于 2012-11-01T11:23:04.753 回答
2

据我了解,您已经具有DateTime价值。要将其转换为所需的字符串,您可以使用以下格式:

dateTime.ToString("MMMM d, yyyy", CultureInfo.InvariantCulture)

注意使用CultureInfo.InvariantCulture. 这确保使用英文月份名称,因为不变的文化基于美国文化。否则,将使用当前区域性,并且可能具有不同的月份名称。

如果日期是从数据库中检索的 aString而不是 aDateTime那么您需要先解析字符串:

var dateTime = DateTime.ParseExact(
  str,
  "MM/d/yyyy h:mm:ss tt", 
  CultureInfo.InvariantCulture
);
于 2012-11-01T11:23:12.823 回答