Mar*_*arc 2 c# culture datetime
我可以为特定文化更改DateTime的标准输出格式.例:
class Program
{
static void Main(string[] args)
{
PrintCultureDateTime("ca-ES");
PrintCultureDateTime("es-ES");
PrintCultureDateTime("en-US");
PrintCultureDateTime("en-GB");
PrintCultureDateTime("pt-PT");
}
public static void PrintCultureDateTime(string culture)
{
string result = new DateTime(2017, 10, 1).ToString("d",
CultureInfo.GetCultureInfo(culture));
Console.WriteLine(string.Format("{0}: {1}", culture, result));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
ca-ES: 1/10/2017
es-ES: 01/10/2017
en-US: 10/1/2017
en-GB: 01/10/2017
pt-PT: 01/10/2017
Run Code Online (Sandbox Code Playgroud)
我想要的是使用标准"d"格式或其他标准格式的日期和月份两位数字,以便修复DateTime字符串的大小.像那样的输出:
ca-ES: 01/10/2017
es-ES: 01/10/2017
en-US: 10/01/2017
en-GB: 01/10/2017
pt-PT: 01/10/2017
Run Code Online (Sandbox Code Playgroud)
您可以使用DateTimeFormatInfo.ShortDatePattern获取模式,然后替换d为dd您真正想要的.您可能需要考虑极端情况,如逃脱或引用d虽然图案-以及明显不更换dd用dddd.(请注意,来自系统文化的格式信息将是只读的;克隆文化以获得具有读/写格式信息的格式.)当然,您也可以使用相同的数月.您甚至可能需要更改年份部分.
我不清楚这样做是个好主意 - 当你改变格式时,它不再是"文化的标准短日期格式"了.
即使在所有这些之后,也无法保证所有文化的长度都相同.没有什么可以阻止文化使用短日期格式"'Year:' yyyy '; Month: ' MM '; 'Day: 'dd".这将是非常不寻常的,但不是无效的.