2014-12-17 5 views
-1

Это мой код:C# печать date-- латинские буквы вместо даты

public override string ToString() 
{ 
    string s = string.Format("name: {0} , Date: {1}, Salary: {2}, id {3}", name, startDate.ToShortDateString(), salary, id); 
    return s; 
} 

Когда я запускаю его
печатает латинские буквы вместо даты.

+0

Не могли бы вы показать латинские буквы , –

+2

Какая у вас языковая система? –

+0

Как копировать во время запуска программы? – user3590450

ответ

0

Проверка текущей культуры вашей программы, это может быть причиной проблемы у Вас с:

public override string ToString() 
{ 
    Console.WriteLine(System.Globalization.CultureInfo.CurrentCulture); 
    Console.WriteLine(System.Globalization.CultureInfo.CurrentUICulture); 

    string s = string.Format("name: {0} , Date: {1}, Salary: {2}, id {3}", name, startDate.ToShortDateString(), salary, id); 
    return s; 
} 

Вот еще некоторая информация об этом: http://msdn.microsoft.com/en-us/library/5hh873ya(v=vs.90).aspx

Кроме того, вы можете форматировать дата явно:

string s = string.Format(CultureInfo.InvariantCulture, "name: {0} , Date: {1:yyyy/MM/dd}, Salary: {2}, id {3}", name, startDate, salary, id); 

CultureInfo.InvariantCulture параметр не нужен, только если он не используется, то в некоторых случаях «/» символ будет заменен разделитель даты текущей культуры («-», например). Следует также отметить, что десятичный разделитель для инвариантной культуры является точкой, и нет разделителя тысяч. Если вы хотите форматировать номера (например, переменную «зарплата») по-другому (в соответствии с культурой, установленной в вашем приложении), вы должны форматировать дату отдельно:

string dateString = String.Format(CultureInfo.InvariantCulture, "{0:yyyy/MM/dd}", startDate); 
string s = string.Format("name: {0} , Date: {1}, Salary: {2}, id {3}", name, dateString, salary, id); 
Смежные вопросы