写入CSV时的日期格式不一致

问题描述 投票:-2回答:3

我面临一个非常奇怪的问题。我正在写这样的CSV文件:

sw.WriteLine($"{posting.publishedOn},{posting.ExpirationDate}");

发布日期是DateTime对象,到期日期是DateTime?对象。

但是,当我在德国的生产服务器上运行它时,它打印出的日期格式非常不一致。有时我会将日期格式化为这样(欧洲风格):

Posting Date,Expiration Date
06.08.2018 11:49,08.07.2018 11:49

有时我会将日期格式化为这样(美国风格):

Posting Date,Expiration Date
8/15/2018 7:56:12 AM,10/14/2018 7:56:12 AM

发布日期和到期日期是完全独立的.NET对象,但每一行都是一致的 - 即如果一列是欧洲格式,另一列也是如此。

我尝试设置这样的文化:

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

但它似乎没有什么区别。

当我在德国的服务器上运行控制台应用程序时会发生这种情况。

可能是什么导致了这个?有没有办法解决它而不必每次写日期时都用格式显式调用ToString

c# .net datetime localization date-formatting
3个回答
1
投票

我相信你需要像这样设定特定的文化:

CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");

© www.soinside.com 2019 - 2024. All rights reserved.