आपको प्रत्येक दिनांक भाग को देखने और लिखित समकक्ष प्राप्त करने के लिए फ़ंक्शन का उपयोग करने की आवश्यकता होगी। मैंने सम्मिलित कर दिया है कि नीचे एक वर्ग लिखित पाठ के लिए पूर्णांकों में कनवर्ट करता है, और साथ ही DateTime
रूपांतरण का समर्थन करने के लिए बढ़ाया:
public static class WrittenNumerics
{
static readonly string[] ones = new string[] { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
static readonly string[] teens = new string[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
static readonly string[] tens = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
static readonly string[] thousandsGroups = { "", " Thousand", " Million", " Billion" };
private static string FriendlyInteger(int n, string leftDigits, int thousands)
{
if (n == 0)
return leftDigits;
string friendlyInt = leftDigits;
if (friendlyInt.Length > 0)
friendlyInt += " ";
if (n < 10)
friendlyInt += ones[n];
else if (n < 20)
friendlyInt += teens[n - 10];
else if (n < 100)
friendlyInt += FriendlyInteger(n % 10, tens[n/10 - 2], 0);
else if (n < 1000)
friendlyInt += FriendlyInteger(n % 100, (ones[n/100] + " Hundred"), 0);
else
friendlyInt += FriendlyInteger(n % 1000, FriendlyInteger(n/1000, "", thousands + 1), 0);
return friendlyInt + thousandsGroups[thousands];
}
public static string DateToWritten(DateTime date)
{
return string.Format("{0} {1} {2}", IntegerToWritten(date.Day), date.ToString("MMMM"), IntegerToWritten(date.Year));
}
public static string IntegerToWritten(int n)
{
if (n == 0)
return "Zero";
else if (n < 0)
return "Negative " + IntegerToWritten(-n);
return FriendlyInteger(n, "", 0);
}
}
अस्वीकरण: मूलभूत कार्यक्षमता शिष्टाचार के @Wedge
इस वर्ग का उपयोग करके, बस डेट टू लिखित विधि को कॉल करें:
var output = WrittenNumerics.DateToWritten(DateTime.Today);
उपरोक्त का आउटपुट है: Twelve May Two Thousand Twelve
मई मैं पूछ सकता हूं कि आप ऐसा क्यों करना चाहते हैं? यह काफी असामान्य तारीख प्रारूप है (और यह 'बारहवीं, दो हजार बारह' नहीं होना चाहिए?)। –
@ फ्रेडेरिक हामिदी: केवल यूएस में। बाकी दुनिया में, हम इसे "बारहवीं मई" के रूप में उच्चारण करते हैं। यही कारण है कि पूरे 'एमएम/डीडी' बनाम 'डीडी/एमएम' असमानता अंतर्निहित है। – Douglas
@ डगलस, आह, मैं समझता हूं। आपकी स्पष्टीकरण के लिए धन्यवाद :) –