Как конвертировать dob в word на языке Си#
привет, ребята, мне нужен код для изменения даты на текст в c# в winforms
Что я уже пробовал:
я искал но не нашел ничего красивого
Основываясь на ссылке, предоставленной Риком Зеландом в решении № 1, я адаптировал код таким образом:
void Main() { DateTime[] dates = new DateTime[] { new DateTime(1981, 1, 28), new DateTime(1998, 2, 1), new DateTime(2000, 3, 31), new DateTime(2001, 4, 8), new DateTime(2016, 6, 5), new DateTime(1977, 8, 3), new DateTime(2012, 10, 12), new DateTime(1968, 12, 15) }; foreach(DateTime dt in dates) { string dtw = DateToWords.Convert(dt); Console.WriteLine("{0} => '{1}'", dt.ToString("dd-MM-yyyy"), dtw); } } // Define other methods and classes here public static class DateToWords { private static CultureInfo ci = new CultureInfo("en-US"); private static string[] unitsMap = new string[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; private static string[] tensMap = new string[] { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; //https://stackoverflow.com/questions/2729752/converting-numbers-in-to-words-c-sharp private static string NumberToWords(int number) { if (number == 0) return "zero"; string words = ""; if ((number / 1000) > 0) { words += NumberToWords(number / 1000) + " Thousand "; number %= 1000; } if ((number / 100) > 0) { words += NumberToWords(number / 100) + " Hundred "; number %= 100; } if (number > 0) { if (words != "") words += " "; if (number < 20) words += unitsMap[number]; else { words += tensMap[number / 10]; if ((number % 10) > 0) words += " " + unitsMap[number % 10]; } } return Regex.Replace(words, @"\ {2,}", " "); } public static string Convert(DateTime dt) { //convert days string dtw = NumberToWords(dt.Day); //convert months dtw += " " + dt.ToString("MMMM", ci); //convert years dtw += ", " + NumberToWords(dt.Year); return dtw; } }
28-01-1981 => 'Twenty Eight January, One Thousand Nine Hundred Eighty One' 01-02-1998 => 'One February, One Thousand Nine Hundred Ninety Eight' 31-03-2000 => 'Thirty One March, Two Thousand ' 08-04-2001 => 'Eight April, Two Thousand One' 05-06-2016 => 'Five June, Two Thousand Sixteen' 03-08-1977 => 'Three August, One Thousand Nine Hundred Seventy Seven' 12-10-2012 => 'Twelve October, Two Thousand Twelve' 15-12-1968 => 'Fifteen December, One Thousand Nine Hundred Sixty Eight'
Я просто добавил чаевые: Дата до слов[^]
ваш код потрясающий, но мне нужно в winform, у меня есть (DOB в цифрах) в моем текстовом поле, и я хочу показать этот DOB в словах в другом текстовом поле
а также, пожалуйста, внесите изменения для меня, что он дает мне "1990" как "тысяча девятьсот девяносто", а для "2000" это хорошо
Попробовать это:
CultureInfo ci = CultureInfo.CurentCulture; // or: new CultureInfo("en-US"); - enter your culture info this.TextBox2.Text = DateToWords(DateTime.ParseExact(this.TextBox1.Text, "yyyy-MM-dd", ci); //enter correct date format!
заранее спасибо
Смотрите примеры здесь: https://www.dotnetperls.com/datetime-format[^]
Чтобы преобразовать числа в слова, см.: преобразование чисел в слова C# - переполнение стека[^]
Братан мне не нужен формат:
моя проблема в том, что:
у меня есть дата в текстовом поле, то есть 28-01-2019, и я хочу "двадцать восьмое января, две тысячи один год"
И...
Что случилось со вторым звеном? Там вы найдете полный пример. Все, что вам нужно сделать, это изменить его в соответствии с вашими потребностями.
Совет: вы должны передать каждую часть даты методу (день, месяц и, наконец, год).
DateTime now = DateTime.Now; Console.WriteLine(now.ToString("D"));Подарю вам "28 января 2019 года"
DateTime now = DateTime.Now; Console.WriteLine("{0:D}", now);Что будет делать то же самое.
у меня есть дата в текстовом поле, то есть 28-01-2019, и я хочу "двадцать восьмое января, две тысячи один год"
Поэтому используйте DateTime.TryParse (или даже TryParseExact), чтобы преобразовать пользовательскую запись в значение DateTime, затем напишите конвертер "число в слова" (есть нагрузки в интернете, это обычная домашняя работа) и используйте его дважды. Месяц, который вы можете получить непосредственно из даты и времени.
Не используй эту штуку:
https://www.codeproject.com/Tips/103025/Converting-numbers-to-the-word-equivalent