这是我的代码:
public override string ToString()
{
string s = string.Format("name: {0} , Date: {1}, Salary: {2}, id {3}", name, startDate.ToShortDateString(), salary, id);
return s;
}
当我跑它时 它打印拉丁字母而不是日期。
答案 0 :(得分: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
参数不是必需的,只有在未使用时才会使用,在某些情况下,'/'字符将被当前设置的文化的日期分隔符替换(例如' - ')。还应该注意的是,不变文化的小数分隔符是一个点,并且没有千位分隔符。如果您想以不同的方式格式化数字(例如'salary'变量)(与应用程序中设置的文化一致),那么您应该单独设置日期格式:
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);