1

我正在尝试在 C# 中将 AM 和 PM 本地化为日期时间。

使用 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、AMDesignator 没有值,
因此在第 16 行中使用“t”会给出正确的输出,
而使用“hh:mm tt”的第 17 行会给出错误的输出。

[编辑:阅读评论后:]“t”是否相当可靠地给出了“典型”使用的格式?(我之前没有本地化经验,所以我不太清楚这些值的可靠性)

4

1 回答 1

2

.NET 中的标准日期和时间格式字符串将为用户的文化做正确的事情。在您的情况下,只需使用:

var culture = new CultureInfo("ja");
var dt = DateTime.Now;
Console.WriteLine(dt.ToString("t", culture)); // t => Short Time format.

如果特定业务需求确实需要,则仅使用自定义覆盖特定于文化的格式。

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

于 2012-11-15T04:57:05.023 回答