c# - 使用百分比,我如何获得两个日期时间之间的时间?
问题描述
我认为描述这一点的最好方法是使用示例。范围在上午 4:00 到下午 4:00 之间。在 0% 时,我想4:00am
回来。100%,我想4:00pm
回来。50%,我想10:00am
回来。
问题是,如何使用此签名获得此功能?
string GetTime(percentage, startTime, endTime)
解决方案
假设两个 DateTimes 都在同一个时区,并且没有转换(DST 开始/结束,本地时间更改等):
public static void Main()
{
var startTime = new DateTime(2019, 01, 01, 4, 0, 0);
var endTime = new DateTime(2019, 01, 01, 16, 0 , 0);
// prints 10:00 AM
Console.WriteLine(GetTime(0.5, startTime, endTime));
}
private static string GetTime(double percentage, DateTime startTime, DateTime endTime)
{
// get the difference between the dates
// you could use TotalSeconds or a higher precision if needed
var diff = (endTime - startTime).TotalMinutes;
// multiply the result by the percentage
// assuming a range of [0.0, 1.0]
double minutes = diff * percentage;
// add the minutes (or precision chosen) to the startTime
var result = startTime.AddMinutes(minutes);
// and get the result
return result.ToShortTimeString();
}
您可以在这个小提琴中进行测试:https ://dotnetfiddle.net/g4gHLJ
推荐阅读
- vue.js - 如何在 VueJS 中枚举特定组件类型的子虚拟机?
- amazon-web-services - AWS 事件溯源实施
- node.js - 过滤器电子隐藏的项目
- python - 如何使用 Selenium Python XPATH 获取文本
- json - jq在变量的帮助下更新键和值
- android - Scaffold 主体中的有状态小部件
- sql-server - 如何处理聚合根之间的引用并发?
- go - 为什么会出现致命错误:所有 goroutine 都处于休眠状态 - 死锁!在这段代码中?
- javascript - 在 node.js 中显示网络摄像头提要、捕获图像并将其保存在本地?
- c# - 401错误,此请求的授权已被拒绝