You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#代码中实现DateTime StartTime = StartDateValue + StartTimeNames[0]?

实现StartDateValue与自定义时间字符串的拼接逻辑

核心思路

要实现StartDateValue + StartTimeNames[0]的逻辑,需先将StartTimeNames[0]的自定义时间字符串(如13H15M)解析为TimeSpan类型,再与StartDateValue的日期部分相加,得到目标DateTime。

具体实现方案

方案1:手动解析字符串(简单直接)

通过字符串分割提取小时和分钟数值,构造时间间隔:

// 获取目标时间字符串
string timeStr = StartTimeNames[0]; // 示例值:"13H15M"

// 分割字符串提取小时、分钟
var timeParts = timeStr.Split(new[] {'H', 'M'}, StringSplitOptions.RemoveEmptyEntries);
int hours = int.Parse(timeParts[0]);
int minutes = int.Parse(timeParts[1]);

// 构造时间间隔
TimeSpan timeSpan = new TimeSpan(hours, minutes, 0);

// 拼接日期与时间
DateTime startTime = StartDateValue.Date + timeSpan;

方案2:使用DateTime.ParseExact解析(格式更规范)

利用.NET内置的日期解析方法匹配自定义格式:

using System.Globalization;

string timeStr = StartTimeNames[0];
// 按指定格式解析字符串,提取时间部分
DateTime parsedTime = DateTime.ParseExact(timeStr, "HH'H'mm'M'", CultureInfo.InvariantCulture);
TimeSpan timeSpan = parsedTime.TimeOfDay;

// 拼接得到最终时间
DateTime startTime = StartDateValue.Date + timeSpan;

替换到业务代码中

将解析逻辑整合到你的GetOrderStatus调用中:

using System.Globalization;

// 解析时间字符串
string timeStr = StartTimeNames[0];
DateTime parsedTime = DateTime.ParseExact(timeStr, "HH'H'mm'M'", CultureInfo.InvariantCulture);
TimeSpan timeSpan = parsedTime.TimeOfDay;
DateTime targetStartTime = StartDateValue.Date + timeSpan;

var status = await OrderStatusService.GetOrderStatus(new OrderStatus()
{
    StoreCode = s_code,
    StartTime = targetStartTime,  // 替换为拼接后的目标时间
    EndTime = DateTime.Now.EndOfTheDay()
});

注意事项

  • 若StartTimeNames中的字符串格式存在不确定性(如仅含小时13H),需添加格式校验或异常捕获,避免解析失败。
  • 使用StartDateValue.Date确保仅取日期部分,避免原有时间值干扰最终结果。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:35:18