转换2012年11月1日上午3:42:09至2012年11月1日

时间:2012-11-01 11:20:01

标签: c# datetime

我有一个表示日期的字符串(mysql数据库DateTime)我想将其转换为自定义格式 MMMM d,YYYY

EG。将11/1/2012 3:42:09 AM转换为 2012年11月1日

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

Parse将其转换为DateTime个对象,然后调用ToString

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

请注意,如果您所在的计算机与myDate的文化不同(例如,您的欧洲日期格式为第一天),则可以使用{{1指定输入格式}}:

ParseExact

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

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

如果以String而不是DateTime从数据库中检索日期,则需要先解析字符串:

var dateTime = DateTime.ParseExact(
  str,
  "MM/d/yyyy h:mm:ss tt", 
  CultureInfo.InvariantCulture
);