C# 如何生成间隔30分钟、首项为当前时间后1~1.5小时的时间字符串列表
C# 间隔30分钟时间列表生成实现
调整后完整代码
public static List<string> GetAdjustedTimeList(int count = 48) { List<string> timeList = new List<string>(); DateTime now = DateTime.Now; // 计算当前时间+1小时后的基准节点 DateTime baseTime = now.AddHours(1); // 向上对齐到最近的30分钟整时刻,确保落在1~1.5小时区间内 int halfHourMark = (int)Math.Ceiling(baseTime.Minute / 30.0) * 30; DateTime startTime = baseTime.Date.AddHours(baseTime.Hour).AddMinutes(halfHourMark); // 生成指定数量的间隔30分钟时间字符串 for (int i = 0; i < count; i++) { // 若需要24小时制格式,将hh:mm改为HH:mm即可 timeList.Add(startTime.AddMinutes(30 * i).ToString("hh:mm")); } return timeList; }
核心逻辑说明
- 首先取当前时间叠加1小时得到基准时间,此时向上对齐到最近的30分钟整点,最大偏差不会超过30分钟,刚好满足「第一个值在当前时间后1小时~1小时30分区间」的要求
- 对齐规则:如果基准时间的分钟数在029分,对齐到当前小时的30分;如果在3059分,对齐到下一小时的0分,完全符合区间要求
- 默认生成48个时间点(覆盖全天24小时),可通过传入count参数自定义生成数量,跨天场景会自动处理日期进位
可选优化
如果需要避免跨天产生的时间歧义,可以修改ToString的格式为yyyy-MM-dd HH:mm,输出带日期的完整时间字符串。
内容的提问来源于stack exchange,提问作者Sora
相关产品推荐
相关产品推荐

