2010-09-07 15 views
11

में कनवर्ट करना मैंने इसके लिए त्वरित खोज की और आश्चर्यचकित हुआ कि इसे कहीं भी नहीं मिला।महीने का नाम पूर्णांक

मूल रूप से पूर्ण महीने के नाम (जनवरी, सितंबर, आदि) को समकक्ष संख्या में परिवर्तित करना चाहते हैं जो मिमी/डीडी/वाईय प्रारूप में उपयोग किया जाएगा।

मैं अपनी खुद की सरणी एक साथ रख सकता हूं और तदनुसार इसे खींच सकता हूं, लेकिन पहले से ही एक त्वरित और सीधा तरीका होना चाहिए। सही?

+1

एक्सटेंशन विधि लिखने के लिए आपको जो वर्ण मिले होंगे, वह शायद आपके प्रश्न की लंबाई के बराबर है :) – epitka

+1

आप शायद सही हैं। :) लेकिन इस तरह, मैं समुदाय को वापस देना चाहता हूं क्योंकि पहली जगह में यह खोजना आसान नहीं था। – Mercurybullet

उत्तर

14

आप महीने के पूर्ण नाम के लिए प्रारूप स्ट्रिंग MMMM का उपयोग कर सकते हैं।

एमएसडीएन पर custom DateTime format strings देखें।

Dim fullMonthName as DateTime 
fullMonthName = DateTime.ParseExact("26 January 2010", "dd MMMM yyyy", 
              CultureInfo.InvariantCulture) 
18
Dim monthName = "September" 
Dim monthNumber = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month 

आप उपयोगकर्ता इनपुट पर इस आधार रहे हैं, तो मुझे लगता है कि यह साफ है (विशेष रूप से यदि आप इस का उपयोग करने के कई संस्कृतियों उम्मीद कर रहे हैं)। DateTime.ParseExact आपको किसी भी प्रकार के इनपुट इनपुट करने और इसे DateTime में अनुवाद करने की अनुमति देगा, फिर आप जिस भी हिस्से की परवाह करते हैं उसे हटा दें।

यदि, हालांकि, यह उपयोगकर्ता इनपुट पर नहीं है, तो मुझे किसी प्रकार के स्थैतिक संग्रह (चाहे एक शब्दकोश या एक enum) का उपयोग करने का सुझाव देना होगा।

+0

एक ही कोड को पोस्ट करने जा रहा था ... – jeroenh

+0

अच्छा लगता है, लेकिन मुझे लगता है कि यह ParseExact के अंदर महीना होना चाहिए। – Mercurybullet

+0

@Mercurybullet धन्यवाद, तय। – bdukes

0

मुझे पागल कहो, लेकिन क्या यह वास्तव में एक enum के लिए नहीं है? संभवतः कोड को यथासंभव सरल रखने पर विचार करने लायक है। http://visualbasic.about.com/od/usingvbnet/a/enum01.htm

+1

आप पागल हैं: पी –

+0

वीबी मेरी विशेषता नहीं है, लेकिन सामान्य रूप से, मैं नहीं संख्याओं में 12 तारों का अनुवाद करने के लिए पूरी तरह से अतिरिक्त लाइब्रेरी जोड़ें। हो सकता है कि वहां कुछ अन्य उपयोगी कार्य थे ... – phreakocious

+0

मैं पहले से ही अन्य सामानों के लिए डेटटाइम लाइब्रेरी का उपयोग कर रहा हूं, बस इस रूपांतरण को करने के लिए एक अंतर्निहित तरीके की जांच कर रहा था। – Mercurybullet

-2

यह लंबे समय तक घुमाया जा सकता है, क्यों IF स्टेटमेंट या केस का चयन नहीं करें।

If Month = "January" Then MonthNum = "1" 
Else If Month = "February" Then ....... 
0

अच्छी तरह से मेरे मामले में मैं इस चाल

  1. महीने
  2. सामान combobox2 के नाम के साथ 2 बता गया
  3. सामान ComboBox1 बनाएं साल

और फिर इस के साथ प्रयोग किया

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged 
     MsgBox(System.DateTime.DaysInMonth(ComboBox2.Text, ComboBox1.SelectedIndex + 1), MsgBoxStyle.Information) 
    End Sub 
संबंधित मुद्दे