How to convert date format to word?

I have one date, for example, 12/05/2012, now I would like to change this format to a simple string.

for ex.

string newdate = new string(); newdate = "12/05/2012"; DateTime Bdate = DateTime.ParseExact(Newdate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); 

now my BDate DateTime i.e. BDate= 2012/05/12

now i want to do something like

if my bdate is 05/05/2012 so i want a line that looks like "twelve may two thousand twelve"

How can i do this?

Please help me...

Thanks in advance....

+6
source share
4 answers

You will need to look at each part of the date and use the function to get the written equivalent. I have included a class below that converts integers to written text and extends it to support DateTime conversion:

 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); } } 

Disclaimer: Basic functionality courtesy of @Wedge

Using this class, just call the DateToWritten method:

 var output = WrittenNumerics.DateToWritten(DateTime.Today); 

Conclusion above: Twelve May Two Thousand Twelve

+10
source

This is not what you want, but the closest I can offer is to use the built-in ToLongDateString functions, which gives you the name of the month and is obviously culture sensitive.

 string str = bdate.ToLongDateString(); // Assuming en-US culture, this would give: "Saturday, May 12, 2012" 
+2
source

Suppose 05/12/2012 is a string, then you should tokenize insert elements separated by the "/" character. For instance:

"12/05/2012" โ†’ ["12", "05", "2012"]

Then you define yourself a rule that analyzes these elements for what you expect. Let's say โ€œ12โ€ is โ€œtwelve,โ€ โ€œ05โ€ is โ€œfive,โ€ or โ€œMay,โ€ etc.

+1
source
 string MyDate = "12/05/2012"; DateTime expected = Convert.ToDateTime(MyDate); string MyNewDate = expected.ToString("dd MMM yyyy"); 

Check out the different date format on this site https://www.mikesdotnetting.com/article/23/date-formatting-in-c .

0
source

Source: https://habr.com/ru/post/915570/


All Articles