2d 10:00:00 到 C# 中的 TimeSpan
2d 10:00:00 to TimeSpan in C#
可以通过某种方式转换为:
2d 10:00:00
到 C# 中的 TimeSpan?
已经有转换它的函数了?
其他一些示例可能是:
30d 00:00:00
1m 3d 20:00:01
1y 2d 00:00:00
甚至只是:
3d
10d
3m
3y 10d
TimeSpan
的解析能力非常有限,最多只能达到几天(而不是几个月或几年)。另一个复杂性是其中一些跨度是上下文相关的。从 2 月开始的 3m
跨度(有 28/29 和 30 天的月份)不同于从 7 月开始的 3m
跨度(有 2 个 31 天的月份)。
所以这取决于你想做什么 确定最好的解析方式。在某些时候,您必须按空格拆分字符串并将 Nm
和 Ny
组件转换为天数,将解析的时间字符串组件(hh:mm:ss
)添加到总共生成 TimeSpan
.
天、小时、分钟和秒很容易,只要您有明确定义的输入格式即可:
string input = "2d 10:00:00";
Timespan parsedTimespan = TimeSpan.ParseExact(input, @"d\d\ hh\:mm\:ss", CultureInfo.InvariantCulture)
正如其他人所指出的,月份、年份等是上下文相关的。从技术上讲,天数也可以,但在这种情况下,“天数”始终等于 24 小时,无论您的日历如何。
要支持其他格式,如“2d”,您可能必须根据自己提出的规范编写自己的解析代码。如果这变得非常复杂,像 Sprache 这样的框架可以提供帮助。
可以通过某种方式转换为:
2d 10:00:00
到 C# 中的 TimeSpan? 已经有转换它的函数了?
其他一些示例可能是:
30d 00:00:00
1m 3d 20:00:01
1y 2d 00:00:00
甚至只是:
3d
10d
3m
3y 10d
TimeSpan
的解析能力非常有限,最多只能达到几天(而不是几个月或几年)。另一个复杂性是其中一些跨度是上下文相关的。从 2 月开始的 3m
跨度(有 28/29 和 30 天的月份)不同于从 7 月开始的 3m
跨度(有 2 个 31 天的月份)。
所以这取决于你想做什么 确定最好的解析方式。在某些时候,您必须按空格拆分字符串并将 Nm
和 Ny
组件转换为天数,将解析的时间字符串组件(hh:mm:ss
)添加到总共生成 TimeSpan
.
天、小时、分钟和秒很容易,只要您有明确定义的输入格式即可:
string input = "2d 10:00:00";
Timespan parsedTimespan = TimeSpan.ParseExact(input, @"d\d\ hh\:mm\:ss", CultureInfo.InvariantCulture)
正如其他人所指出的,月份、年份等是上下文相关的。从技术上讲,天数也可以,但在这种情况下,“天数”始终等于 24 小时,无论您的日历如何。
要支持其他格式,如“2d”,您可能必须根据自己提出的规范编写自己的解析代码。如果这变得非常复杂,像 Sprache 这样的框架可以提供帮助。