gpt4 book ai didi

c# - C# 中的 TimeSpan "pretty time"格式

转载 作者:bug小助手 更新时间:2023-10-28 10:45:55 29 4
gpt4 key购买 nike

输入此问题的标题将我带到 this question .我正在寻找同样的东西,但如果你明白我的意思,可能不是静态格式的东西?

我正在编写一个快速程序,它将获取两个 DateTime 对象的 TimeSpan 持续时间并将它们输出以打印到纸上。

首选的格式是:XX 天,YY 小时,ZZ 分钟(秒无关;天也是如此,因为我不希望时间跨度包含超过几个小时)。

说出下面的代码(例如):

DateTime start = DateTime.Now;
DateTime end = DateTime.Now.AddMinutes(135);
TimeSpan duration = (end - start);

// output duration as XX hours, YY minutes

谢谢,
扎克

附:我也遇到过“PrettyTime.NET”,但它会输出诸如“3 天前”之类的内容。我在 google 上找到的所有其他主题都可以像上面的示例那样格式化持续时间字符串,这让我找到了一个基于 Java 的解决方案。 :\


2014-09-08 更新:

3 年后跟进,我在 NuGet 和 Github 上发现了一个很棒的库,名为“Humanizer”,它可以解决我遇到的这个问题。我用的不多,但我确实试过了,效果很好。虽然它是一个相当大的库(它会为您的项目的构建路径发出大量用于不同文化的文件夹(我相信有一种方法可以自定义它)。

最佳答案

如果你关心复数:

public static string ToPrettyFormat(this TimeSpan span) {

if (span == TimeSpan.Zero) return "0 minutes";

var sb = new StringBuilder();
if (span.Days > 0)
sb.AppendFormat("{0} day{1} ", span.Days, span.Days > 1 ? "s" : String.Empty);
if (span.Hours > 0)
sb.AppendFormat("{0} hour{1} ", span.Hours, span.Hours > 1 ? "s" : String.Empty);
if (span.Minutes > 0)
sb.AppendFormat("{0} minute{1} ", span.Minutes, span.Minutes > 1 ? "s" : String.Empty);
return sb.ToString();

}

关于c# - C# 中的 TimeSpan "pretty time"格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438363/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com