c#打印日期 - 拉丁字母而不是日期

时间:2014-12-17 10:48:28

标签: c# date printing

这是我的代码:

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

当我跑它时 它打印拉丁字母而不是日期。

1 个答案:

答案 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);