我想要以本地文化格式输出时间间隔,将其作为CSV文件导入Excel。
时间间隔包含毫秒。
在英文文化中,这表示如下:
但是,无论我尝试使用CultureInfo对象进行哪些设置,都无法使其正常工作。
在英文文化中,这表示如下:
00:00:01.2345678
在德文文化中,应该为00:00:01,2345678
(用逗号代替句点)但是,无论我尝试使用CultureInfo对象进行哪些设置,都无法使其正常工作。
TimeSpan t = new TimeSpan(12345678);
var cul = CultureInfo.GetCultureInfo("de");
// cul.DateTimeFormat.FullTimeSpanPositivePattern == "d':'h':'mm':'ss','FFFFFFF";
// (note the comma)
Console.WriteLine(String.Format(cul, "{0}", t));
// expected: "00:00:01,2345678" (with ,)
// actual: "00:00:01.2345678" (with .)
到目前为止,我甚至无法确定 CultureInfo 类的哪个属性定义了这个。这是在某个地方硬编码了吗?
我知道我可以明确定义输出格式: `String.Format("{0:hh\:mm\:ss\,FFFFFFF}", t)
但是否有一种方法可以使用 IFormatProvider 来实现,以便 c#将使用给定的 Culture?
t.ToString("G",cul)
吗?还有 "de-DE" 语言环境呢? - FildorTimeSpan
的。Hans 的答案将一个TimeSpan
转换为DateTime
,然后输出一个字符串作为解决方法。 - DavidGg
(这里适用),但它不能作为时、分、秒的分隔符。另一个问题的标题过于笼统了。 - Tim Schmelter