上午下午。本地化(AMDesignator,PMDesignator)

时间:2012-11-14 13:02:19

标签: c# asp.net

我正在尝试本地化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”是否相当可靠地给出了“通常”使用的格式? (我之前没有本地化的经验,所以我不太了解这些值是多么可靠)

1 个答案:

答案 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覆盖特定于区域性的格式。

微软在本地化工作上投入了大量资金,以确保格式,翻译等对每个人都是正确的。