2013-10-07 8 views
6

Ich habe eine Zeichenfolge, die in ihm kurze Monatsnamen haben. \einen String MONTH enthält, von MonthDigit Int

string month = "Jun"; 

Ich brauche zu bekommen Monat in Ziffer von diesem Monat Namen.

sagen, dass ich dies tun:

int monthInDigit = getMonth(month); 

monthInDigit <-- 6 

, wie ich das erreichen kann. Wenn Sie meine Frage nicht bekommen, bitte kommentieren, ich werde es erklären.

thanxx im Voraus

+0

Ich verstehe nicht. Warum gibt 'monthInDigit' '6'? –

+0

@ SonerGönül, würde ich voraussetzen, denn Juni ist der 6. Monat im Jahr. – Arran

+0

@Arran Oh, das ist die Bedeutung von monthInDigit .. Clever :) –

Antwort

13
int monthInDigit = DateTime.ParseExact(month, "MMM", CultureInfo.InvariantCulture).Month; 
+0

Warum haben Sie Null als letzten Parameter übergeben –

+0

Weil Provider in diesem Fall nicht wichtig ist ... –

+0

Ok danke, dieser hat mir geholfen –

7

können Sie analysieren, um es zu einem DateTime zuerst:

DateTime dt = DateTime.ParseExact("Jun", "MMM", CultureInfo.InvariantCulture); 
int month = dt.Month; 
if(month < 6) 
{ 
    // do something... 
} 
+1

Sie wieder ..wooow genial :)) – Neel

+0

Danke für die Lösung –

+0

@MurtazaMunshi: Verwenden Sie 'CultureInfo.InvariantCulture' anstelle von' null', wenn Sie möchten, dass es in jeder Kultur funktioniert. –

0

einen anderen Weg:

string [] arr= {jun, fab,...}; 

public int getMonth(string month){ 

for(int i = 0 ; i< arr.length ; i++){ 
    if(string[i].Contains(month) || month.Contains(arr[i])) 
    return i+1; 
    } 

return -1;// if month is invalid , return -1 
} 
+0

Dieser ist total ineffizient kumpel. –