日期时间.显示月份和日期语言

本文关键字:日期 语言 时间 显示 | 更新日期: 2023-09-27 18:21:27

我有一个不同国籍的人的电子邮件地址列表(每个人我都有iso代码)

当我向所有这些人发送电子邮件时,我需要在邮件的文本中将datetime字段转换为按照他们的特定文化设置格式的字符串。

为此,我正在做

CultureInfo ci = new CultureInfo(ISO);
myStringDate = myDate.ToString(ci.DateTimeFormat.ShortDatePattern);

和工作完美,但如果我使用LongDatePattern代替short,用于显示"2010年6月13日星期一"这样的日期,除了当天和月份的语言外,它的工作也很好。

如果是个人文化,我需要显示"Martedi"answers"Giugino",而不是"monday"answers"June"

如何在不改变当前UI文化的情况下做到这一点?

日期时间.显示月份和日期语言

这些模式描述了DateTime输出结果中的年、月、日和其他参数位置。但是月份和日期名称取自CultureInfo对象,而不是模式。DateTime.ToString()重载支持将CultureInfo参数与格式一起传递。

CultureInfo culture = new CultureInfo(ISO); 
DateTime.Now.ToString(culture.DateTimeFormat.LongDatePattern, culture);

这样,.ToString()将同时尊重指定区域性的模式和名称

您只指定了格式模式,因此它采用默认格式的其他设置。您还应该指定格式提供程序:

myStringDate = myDate.ToString(ci.DateTimeFormat.LongDatePattern, ci);

或者使用标准格式字符串D表示长日期模式(因为它将从您指定的格式提供商获得实际模式):

myStringDate = myDate.ToString("D", ci);

演示:

CultureInfo ci = new CultureInfo("it-IT");
Console.WriteLine(DateTime.Now.ToString("D", ci));
ci = new CultureInfo("sv-SE");
Console.WriteLine(DateTime.Now.ToString("D", ci));

输出:

giovedì 26 gennaio 2012
den 26 januari 2012

我刚刚遇到了一个类似的问题,并用解决了它

DateTime.Now.ToString("dddd, dd MMMM yyyy", new System.Globalization.CultureInfo("it-IT"));

这要归功于这个链接。

使用DateTimeFormatInfo类。

string code = "mk-MK";
DateTimeFormatInfo info =
    DateTimeFormatInfo.GetInstance(CultureInfo.GetCultureInfo(code));
string longDate = 
    DateTime.Now.ToString(info.LongDatePattern, new System.Globalization.CultureInfo(code));

DateTime.ToString()还有另一个重载,您可以使用它来指定您想要的模式(因为您当前要使用的区域性。尝试:

myStringDate = myDate.ToString(ci.DateTimeFormat.LongDatePattern,
                               ci);