C# - 将 int 转换为 DateTime

问题描述 投票:0回答:1

我正在处理以下问题。 我有一堆 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

c# datetime integer
1个回答
3
投票

听起来您只需将整数除以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
类型(又名
文本表示)。如果您是编程新手,了解什么是类型的值和类型的文本表示非常重要。

编辑:

作为替代方案,您可以使用

Math.DivRem

 方法作为
Dmitry 在评论中提到支持解构声明,如 随 C# 7.0 版本引入,如;

计算两个数字的

,并且 还在输出参数中返回余数

int i = 1430; var (hours, minutes) = Math.DivRem(i, 100); var time = DateTime.Today.AddHours(hours).AddMinutes(minutes);
    
© www.soinside.com 2019 - 2024. All rights reserved.