0

我想以美国格式返回这个短日期,我的应用程序的当前文化是en-GB,但我希望它是en-US.

这是我到目前为止的代码:

DateTime.Now.AddYears(-2).ToShortDateString();
4

5 回答 5

4

您需要确保使用正确的文化格式字符串来实现这一点。

直接从文化中获取这种格式的一种方法是:

CultureInfo.GetCultureInfo("en-US").DateTimeFormat.ShortDatePattern

对我来说,这会返回M/d/yyyy

var usShortDatePattern = 
             CultureInfo.GetCultureInfo("en-US").DateTimeFormat.ShortDatePattern;
DateTime.Now.AddYears(-2).ToString(usShortDatePattern);

这样做的好处是,如果用户en-US在其控制面板(区域和语言)中覆盖了短日期模式,他们将获得所需的格式。

于 2012-08-17T09:24:07.457 回答
2

取自文档

DateTime.Now.AddYears(-2).ToString("d", new CultureInfo("en-US"));
于 2012-08-17T09:21:40.027 回答
1

使用.ToString()扩展方法并输入格式:

DateTime.Now.AddYears(-2).ToString("M/d/yyyy");

此处记录了自定义日期格式选项:

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2012-08-17T09:21:02.793 回答
1
var culture = new CultureInfo("en-us");
string formatedDate = DateTime
    .Now
    .AddYears(-2)
    .ToString(culture.DateTimeFormat.ShortDatePattern, culture);
于 2012-08-17T09:23:36.620 回答
1

“我想应用 en-US 短日期模式”:

DateTime.Now.AddYears(-2).ToString("d", CultureInfo.GetCultureInfo("en-US"));

“我想应用 M/d/yyyy 模式,无论 .NET 是否认为这是 en-US 的短模式:

DateTime.Now.AddYears(-2).ToString(@"M\/d\/yyyy", CultureInfo.InvariantCulture)

(结果与上面相同,但如果您认为“美国格式”实际上是 MM/dd/yyyy,这也用于美国,那么这就是您想要的方法,但使用@"MM\/dd\/yyyy"而不是@"M\/d\/yyyy".

最后,“我想找出用于另一个呼叫的 en-US 短日期模式:

CultureInfo.GetCultureInfo("en-US").DateTimeFormat.ShortDatePattern
于 2012-08-17T09:35:35.017 回答