【发布时间】:2019-08-26 18:58:42
【问题描述】:
我认为描述这一点的最佳方式是使用示例。范围在上午 4:00 到下午 4:00 之间。在 0% 时,我想找回 4:00am。在 100% 的情况下,我想找回 4:00pm。在 50% 时,我想找回 10:00am。
问题是,如何通过此签名获得此功能?
string GetTime(percentage, startTime, endTime)
【问题讨论】:
-
startTime和endTime的类型是DateTime还是string? -
@phuzi 日期时间
-
如果 startTime 和 endTime 是
DateTimes,那么你可以减去它们得到一个TimeSpan。从TimeSpan,您可以获得Ticks属性。将其转换为double,乘以您的百分比,将结果转换回long。用它来构造一个新的TimeSpan。最后将新的 TimeSpan 添加到原始 startTime 并将其返回为 DateTime -
如果这些是
DateTime和.Kind == DateTimeKind.Utc,那么当然 - 只需减去它们。但如果它们是其他任何东西,请小心,因为在减去DateTime值时,NOT 会考虑时区转换,例如夏令时和标准时间的变化。根据您的用例,您最好从DateTimeOffset值开始。 -
@MattJohnson 好点。对于这个问题,我想忽略 DST 的概念,并假装它不存在。