我正在处理以下问题。 我有一堆 24 小时格式的 int,没有冒号。像这样的东西:
(HourMinute) meaning (Hour:Minute)
830 -> 08:30
1400 -> 14:00
245 -> 02:45
0 -> 00:00
2359 -> 23:59
等等。由此我想创建一个
DateTime
。像这样的东西:
DateTime time = DateTime.Today + new TimeSpan(0, 0, 0);
那么
TimeSpan
该如何填写呢?或者,一般来说,如何使用今天的日期和 int 时间(00 秒)创建一个 DateTime
?
听起来您只需将整数除以100即可得到小时部分,然后计算提醒除以100即可得到分钟部分?
int i = 1430;
var hours = i / 100; // 14 because of integer division
var minutes = i % 100; // 30
然后
DateTime time = DateTime.Today + new TimeSpan(hours, minutes, 0);
我有一堆 24 小时格式的 int,没有冒号。我必须指出,这句话很有误导性。
int
(这是
Int32
的别名)具有 no 格式。它有 32 位,代表一个数字。所有这些24小时格式概念都属于string
类型(又名文本表示)。如果您是编程新手,了解什么是类型的值和类型的文本表示非常重要。
编辑:作为替代方案,您可以使用 方法作为 Dmitry 在评论中提到支持解构声明,如 随 C# 7.0 版本引入,如;
计算两个数字的商,并且 还在输出参数中返回余数。
int i = 1430;
var (hours, minutes) = Math.DivRem(i, 100);
var time = DateTime.Today.AddHours(hours).AddMinutes(minutes);