更改时间跨度毫秒分隔符;逗号(,)代替点(。)[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改时间跨度毫秒分隔符;逗号(,)代替点(。)[重复]相关的知识,希望对你有一定的参考价值。
我想在本地文化中输出一个时间跨度,将其作为csv导入Excel中。时间跨度包含毫秒。
与英国文化,这意味着,例如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#将使用给定的文化?
答案
使用"g"-format specifier,所以t.ToString("g", culture)
。默认情况下,使用TimeSpan
格式说明符转换"c"
,这是一种常见的非文化特定格式。
使用string.Format
这将是
String.Format(cul, "{0:g}", t)
关于格式化时间跨度can be found in the docs的更多信息
另一答案
这适合我。 Version fiddle
TimeSpan t = new TimeSpan(12345678);
var cul = CultureInfo.GetCultureInfo("de");
Console.WriteLine(t.ToString("g", cul));
article微软表示
“g”:此说明符仅输出所需内容。它是文化敏感的,采用[ - ] [d':'] h':'mm':'ss [.FFFFFFF]的形式。
以上是关于更改时间跨度毫秒分隔符;逗号(,)代替点(。)[重复]的主要内容,如果未能解决你的问题,请参考以下文章