दिलचस्प पोस्ट
नक्शा देखें Google दिशानिर्देश API – डिकोडिंग पॉलीलाइन का उपयोग करके दिशाओं को आकर्षित करें खोज इंजन – ल्यूसीन या सोलर DialogFragment OnCreateView बनाम ऑनक्रेट डिआलिओग के लिए कस्टम लेआउट कैसे numpy.array को boost :: python से वापस जाना है? मैं 'अपरिचित चयनकर्ता को उदाहरण के लिए भेजा' त्रुटि को डीबग कैसे कर सकता हूं एफसीएम (फ़ायरबेज क्लाउड मेसेजिंग) द्वारा सी # द्वारा एंड्रॉइड को पुश भेजें जावास्क्रिप्ट की आवश्यकता होती है () फ़ंक्शन को संदर्भ दें त्रुटि: आवश्यकता परिभाषित नहीं होती है जीमेल आराम API: 400 बुरा अनुरोध + असफल प्रीकंडिशन एक JSONException प्राप्त करना: इनपुट के अंत में वर्ण 0 फ्लेक्सबॉक्स में अंतिम मार्जिन / पैडिंग गिरने जेएस में ऑब्जेक्ट करने के लिए स्ट्रिंग एक प्रक्रिया का "वास्तविक" स्मृति उपयोग, यानी निजी गंदे आरएसएस का निर्धारण करने का एक तरीका? जावा: दिनांक निर्माता को क्यों नापसंद किया गया है, और मैं इसके बजाय क्या उपयोग करूँ? वीम में चयन के लिए खोजें Jquery में अनुक्रमणिका द्वारा एक तत्व प्राप्त करें

कैसे सी # में तुलना के लिए एक पूर्णांक के लिए एक महीने के नाम (स्ट्रिंग) को पार्स करने के लिए?

मुझे किसी सरणी में मेरे पास कुछ महीने के नाम की तुलना करने में सक्षम होना चाहिए।

यह अच्छा होगा यदि कोई सीधा रास्ता था:

Month.toInt("January") > Month.toInt("May") 

मेरा Google खोज केवल अपनी तरह से लिखने का एकमात्र तरीका है, लेकिन यह एक सामान्य समस्या की तरह लगता है कि मुझे लगता है कि यह पहले से ही लागू होता। नेट, इससे पहले किसी ने भी किया था?

Solutions Collecting From Web of "कैसे सी # में तुलना के लिए एक पूर्णांक के लिए एक महीने के नाम (स्ट्रिंग) को पार्स करने के लिए?"

DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture ).Month

यद्यपि, आपके उद्देश्यों के लिए, संभवतः आप केवल एक Dictionary<string, int> को अपने मूल्य पर महीने के नाम पर मैप करने से बेहतर बना सकते हैं

यदि आप DateTime.ParseExact() – कि विधि का उपयोग करते हैं, तो कई लोगों ने सुझाव दिया है, आपको सावधानी से विचार करना चाहिए कि जब कोई गैर-अंग्रेज़ी वातावरण में एप्लिकेशन चलता है तो आप क्या करना चाहते हैं!

डेनमार्क में, ParseExact("Januar", ...) और ParseExact("January", ...) का काम करना चाहिए और जो विफल होना चाहिए?

यह CultureInfo.CurrentCulture बीच का अंतर होगा। वर्तमान CultureInfo.CurrentCulture और CultureInfo.InvariantCulture

आप ऐसा कुछ कर सकते हैं:

 Convert.ToDate(month + " 01, 1900").Month 

आप DateTime ऑब्जेक्ट प्राप्त करने के लिए DateTime.Parse विधि का उपयोग कर सकते हैं और फिर अपने महीना संपत्ति की जांच कर सकते हैं। ऐसा कुछ करो:

 int month = DateTime.Parse("1." + monthName + " 2008").Month; 

युग एक दिनांकटाइम ऑब्जेक्ट बनाने के लिए एक मान्य तारीख बनाना है।

आप महीनों की एक मात्रा का उपयोग कर सकते हैं:

 public enum Month { January, February, // (...) December, } public Month ToInt(Month Input) { return (int)Enum.Parse(typeof(Month), Input, true)); } 

मैं enum.Parse () के लिए वाक्यविन्यास पर 100% निश्चित नहीं हूं, हालांकि।

ऐसा करने के लिए आपको दिनांकटाइम इंस्टेंस बनाने की आवश्यकता नहीं है। यह इस रूप में सरल है:

 public static class Month { public static int ToInt(this string month) { return Array.IndexOf( CultureInfo.CurrentCulture.DateTimeFormat.MonthNames, month.ToLower(CultureInfo.CurrentCulture)) + 1; } } 

मैं da-DK संस्कृति पर चल रहा हूं, इसलिए यह इकाई परीक्षण पास:

 [Theory] [InlineData("Januar", 1)] [InlineData("Februar", 2)] [InlineData("Marts", 3)] [InlineData("April", 4)] [InlineData("Maj", 5)] [InlineData("Juni", 6)] [InlineData("Juli", 7)] [InlineData("August", 8)] [InlineData("September", 9)] [InlineData("Oktober", 10)] [InlineData("November", 11)] [InlineData("December", 12)] public void Test(string monthName, int expected) { var actual = monthName.ToInt(); Assert.Equal(expected, actual); } 

मैं इसे एक अधिभार बनाने के लिए पाठक को एक व्यायाम के रूप में छोड़ दूँगा जहां आप एक स्पष्ट CultureInfo में पारित कर सकते हैं

एक बस समाधान नाम और मूल्यों के साथ एक शब्दकोश बना होगा। फिर इसमें शामिल हैं () आप सही मूल्य पा सकते हैं।

 Dictionary<string, string> months = new Dictionary<string, string>() { { "january", "01"}, { "february", "02"}, { "march", "03"}, { "april", "04"}, { "may", "05"}, { "june", "06"}, { "july", "07"}, { "august", "08"}, { "september", "09"}, { "october", "10"}, { "november", "11"}, { "december", "12"}, }; foreach (var month in months) { if (StringThatContainsMonth.ToLower().Contains(month.Key)) { string thisMonth = month.Value; } } 

यदि आप c # 3.0 (या ऊपर) का उपयोग कर रहे हैं तो आप विस्तारक का उपयोग कर सकते हैं

मैं इसे स्पेनिश संस्करण में सी # कोड में अनुवाद करता हूँ, का संबंध है:

 public string ObtenerNumeroMes(string NombreMes){ string NumeroMes; switch(NombreMes) { case ("ENERO") : NumeroMes = "01"; return NumeroMes; case ("FEBRERO") : NumeroMes = "02"; return NumeroMes; case ("MARZO") : NumeroMes = "03"; return NumeroMes; case ("ABRIL") : NumeroMes = "04"; return NumeroMes; case ("MAYO") : NumeroMes = "05"; return NumeroMes; case ("JUNIO") : NumeroMes = "06"; return NumeroMes; case ("JULIO") : NumeroMes = "07"; return NumeroMes; case ("AGOSTO") : NumeroMes = "08"; return NumeroMes; case ("SEPTIEMBRE") : NumeroMes = "09"; return NumeroMes; case ("OCTUBRE") : NumeroMes = "10"; return NumeroMes; case ("NOVIEMBRE") : NumeroMes = "11"; return NumeroMes; case ("DICIEMBRE") : NumeroMes = "12"; return NumeroMes; default: Console.WriteLine("Error"); return "ERROR"; } } 

और सवाल पूछने के बाद इस सात सालों का उत्तर देने के लिए, इन तुलनात्मक तरीकों का उपयोग करके अंतर्निहित तरीकों का उपयोग करना संभव है:

 Month.toInt("January") > Month.toInt("May") 

हो जाता है

 Array.FindIndex( CultureInfo.CurrentCulture.DateTimeFormat.MonthNames, t => t.Equals("January", StringComparison.CurrentCultureIgnoreCase)) > Array.FindIndex( CultureInfo.CurrentCulture.DateTimeFormat.MonthNames, t => t.Equals("May", StringComparison.CurrentCultureIgnoreCase)) 

सादगी के लिए एक एक्सटेंशन विधि में किस प्रकार पुन: लागू किया जा सकता है निम्नलिखित एक LINQPad उदाहरण है (इसलिए Dump() विधि कॉल):

 void Main() { ("January".GetMonthIndex() > "May".GetMonthIndex()).Dump(); ("January".GetMonthIndex() == "january".GetMonthIndex()).Dump(); ("January".GetMonthIndex() < "May".GetMonthIndex()).Dump(); } public static class Extension { public static int GetMonthIndex(this string month) { return Array.FindIndex( CultureInfo.CurrentCulture.DateTimeFormat.MonthNames, t => t.Equals(month, StringComparison.CurrentCultureIgnoreCase)); } } 

आउटपुट के साथ:

 False True True 
 Public Function returnMonthNumber(ByVal monthName As String) As Integer Select Case monthName.ToLower Case Is = "january" Return 1 Case Is = "february" Return 2 Case Is = "march" Return 3 Case Is = "april" Return 4 Case Is = "may" Return 5 Case Is = "june" Return 6 Case Is = "july" Return 7 Case Is = "august" Return 8 Case Is = "september" Return 9 Case Is = "october" Return 10 Case Is = "november" Return 11 Case Is = "december" Return 12 Case Else Return 0 End Select End Function 

सावधानी कोड बीटा संस्करण में है

मैंने क्या किया था SimpleDateFormat का उपयोग करने के लिए एक प्रारूप स्ट्रिंग बनाने के लिए, और एक तिथि करने के लिए पाठ को पार्स, और उसके बाद उस महीने से प्राप्त कोड नीचे है:

 int year = 2012 \\or any other year String monthName = "January" \\or any other month SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); int monthNumber = format.parse("01-" + monthName + "-" + year).getMonth();