我正在尝试本地化A.M. &安培;下午。在C#的datetime中。
使用C#的'PMDesignator'返回的值有多可靠& 'AMDesignator'(如下面的代码所示)?
如何使用相同的代码处理以下两种情况?
//Line# Output
//----- ------
void Main() //1
{ //2
DateTime dt = DateTime.Now; // it is 5:56 PM now //3 it is 5:56 PM now
//4
//Japanese //5
var JapaneseCulture = new System.Globalization.CultureInfo("ja"); //6
Console.WriteLine(JapaneseCulture.DateTimeFormat.PMDesignator); //7 午後
Console.WriteLine(JapaneseCulture.DateTimeFormat.AMDesignator); //8 午前
Console.WriteLine(dt.ToString("t",JapaneseCulture)); //9 17:56
Console.WriteLine(dt.ToString("hh:mm tt",JapaneseCulture)); //10 05:56 午後
//11
//German //12
var GermanCulture = new System.Globalization.CultureInfo("de"); //13
Console.WriteLine(GermanCulture.DateTimeFormat.PMDesignator); //14 (blank)
Console.WriteLine(GermanCulture.DateTimeFormat.AMDesignator); //15 (blank)
Console.WriteLine(dt.ToString("t",GermanCulture)); //16 17:56
Console.WriteLine(dt.ToString("hh:mm tt",GermanCulture)); //17 05:56
}
日语 -
PMDesignator,AMDesignator有值,
但在使用“t”时未在第9行显示
在这种情况下,第10行(“hh:mm tt”)中指定的格式可以提供更正确的输出。
德语 -
PMDesignator,AMD签名者没有值,
所以使用第16行中的“t”给出正确的输出,
使用“hh:mm tt”的第17行输出不正确。
[编辑:阅读评论后:] “t”是否相当可靠地给出了“通常”使用的格式? (我之前没有本地化的经验,所以我不太了解这些值是多么可靠)
答案 0 :(得分:1)
.NET中的Standard Date and Time Format Strings将为用户的文化做正确的事情。在你的情况下,只需使用:
var culture = new CultureInfo("ja");
var dt = DateTime.Now;
Console.WriteLine(dt.ToString("t", culture)); // t => Short Time format.
如果特定业务要求确实,则仅使用customizations覆盖特定于区域性的格式。
微软在本地化工作上投入了大量资金,以确保格式,翻译等对每个人都是正确的。