将 2012-11-1 上午 3:42:09 转换为 2012 年 11 月 1 日



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

例如。转换 2012-11-1 上午03:42:09 到2012年11月1

由于您希望 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);

试试这个 选择 DATENAME(MM, GETDATE()) + RIGHT(CONVERT(VARCHAR(12), GETDATE(), 107), 9) 作为 [Month DD, YYYY]

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");

据我了解,您已经有了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
);

最新更新