如何以文化感知的方式格式化TimeSpan的HH:mm:ss分隔符?我正在开发一个可以在世界许多国家/地区看到的应用程序。没有多少国家显示除小时、分钟和秒以外的任何内容:作为分隔符,但有一些国家,我想确保时区的格式适合该地区。DateTime很棒,但TimeSpan不是。这些片段来自我在VisualStudio2010中的即时窗口,使用.Net4,我的语言环境是马拉雅拉姆语(印度)。dateTime.Now调用还反映了我的时钟、MicrosoftOutlook和其他领域如何显示时间。DateTime.Now.ToString()"02-10-1217.00.58"http://msdn.microsoft.com/en-us/library/dd784379.aspx表示“如果formatProvider为null,则使用DateTimeFormatInfo对象。如果格式是自定义格式字符串,忽略formatProvider参数。”按理说我连当前的CultureInfo都不用传了。我想要的格式是hh.mm.ss但显然hh:mm:ss在大多数其他语言中都是如此,如果有其他可能性它应该自动反映这些-基本上TimeSpan应该具有文化意识,就像DateTime是的。然而:timeRemaining.ToString()"00:02:09"timeRemaining.ToString("c")"00:02:09"timeRemaining.ToString("c",CultureInfo.CurrentCulture)"00:02:09"timeRemaining。ToString("g")"0:02:09"timeRemaining.ToString("G")"0:00:02:09.0000000"timeRemaining.ToString("t")"00:02:09"timeRemaining.ToString("g",CultureInfo.CurrentCulture)"0:02:09"timeRemaining.ToString("g",CultureInfo.CurrentUICulture)"0:02:09"timeRemaining.ToString("G",CultureInfo.CurrentUICulture)"0:00:02:09.0000000"timeRemaining.ToString("G",CultureInfo.CurrentCulture)"0:00:02:09.0000000"timeRemaining.ToString("t",CultureInfo.CurrentCulture)"00:02:09"我正在寻找一个简单的以文化感知方式输出timeSpan的一行代码。任何想法表示赞赏。看起来像是一个错误,您可以在connect.microsoft.com上报告它。同时,解决方法是使用DateTime格式。像这样:使用系统;使用System.Globalization;类程序{staticvoidMain(string[]args){varci=CultureInfo.GetCultureInfo("ml-IN");System.Threading.Thread.CurrentThread.CurrentCulture=ci;varts=newTimeSpan(0,2,9);vardt=newDateTime(Math.Abs??(ts.Ticks));Console.WriteLine(dt.ToString("HH:mm:ss"));Console.ReadLine();}}输出:00.02.09这更像是一条评论,但需要一些空间,所以我把它写成一个答案。虽然DateTime字符串格式在.NET中存在了很长时间,但TimeSpan格式是.NET4.0(VisualStudio2010)中的新增功能。Culture有一个DateTimeFormatInfo对象,它由DateTime使用并包含有关是否使用冒号:或句点的信息。小时、分钟和秒等。现在,TimeSpan似乎没有使用这个DateTimeFormatInfo对象,也没有任何叫做“TimeSpanFormatInfo”的东西。下面是一个例子://我们从一个非只读的不变文化开始Thread.CurrentThread.CurrentCulture=newCultureInfo("");//更改文化的DateTime格式信息的时间分隔符CultureInfo.CurrentCulture.DateTimeFormat.TimeSeparator="";vardt=newDateTime(2013,7,8,13,14,15);控制台.WriteLine(dt);//写入“07/08/2013131415”varts=newTimeSpan(13,14,15);控制台.WriteLine(ts);//writes"13:14:15"我正在寻找一个简单的单行代码以文化感知的方式输出timeSpan。然后我认为你最好使用DateTime类为你做格式化:stringdisplay=newDateTime(timespan.Ticks).ToLongTimeString();假设时间跨度持续0到24小时之间的正持续时间。以上是C#学习教程:HowtoformattheHH:mm:ssseparatorofTimeSpaninculturallyaware?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
