2012-11-01 85 views

回答

5

既然你想十一月月,你可以使用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); 
+0

@Champ,欢迎您 – Habib

+2

请注意,如果在具有俄罗斯区域设置的计算机上运行,​​将生成字符串“ноября1,2012”。当然修复很简单:只需使用CultureInfo.InvariantCulture,因为它在解析字符串时已经使用了。 –

+0

这太棒了... – Champ

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

这会给你''January 11,YYYY'' – Habib

+0

@Habib不在我的系统上它不会。你的日期是倒退的:-D –

+0

是的,它给了我'1月11日,YYYY' – Champ

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

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

相关问题