2012-11-01 131 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]

相關問題