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

C#如何为字符串中的多个DateTime添加+2 UTC偏移量

解决方案

可以通过正则匹配+日期时间解析调整的方式处理字符串中的多个日期时间,具体实现如下:

1. 编写日期时间调整函数

using System.Globalization;
using System.Text.RegularExpressions;

private string AdjustMarketDatetimes(string marketsStr)
{
    // 匹配每个条目里的日期时间部分(格式:"- yy/MM/dd HH:mm")
    var datetimeRegex = new Regex(@"- (\d{2}/\d{2}/\d{2} \d{2}:\d{2})");
    
    return datetimeRegex.Replace(marketsStr, match =>
    {
        // 提取捕获到的日期时间字符串
        var dtString = match.Groups[1].Value;
        
        // 精确解析日期时间(指定格式和不变文化,避免区域差异导致解析失败)
        if (DateTime.TryParseExact(dtString, "yy/MM/dd HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out var originalDt))
        {
            // 加2小时后,格式化为原字符串格式
            var adjustedDt = originalDt.AddHours(2);
            return $"- {adjustedDt.ToString("yy/MM/dd HH:mm", CultureInfo.InvariantCulture)}";
        }
        
        // 解析失败时返回原内容,防止破坏字符串结构
        return match.Value;
    });
}

2. 在返回模型时调用该函数

return new Model
{          
    markets = AdjustMarketDatetimes(response.markets)
};

关键说明

  • 正则匹配逻辑:@"- (\d{2}/\d{2}/\d{2} \d{2}:\d{2})" 精准定位每个市场条目后的日期时间片段,确保只处理目标内容。
  • 日期解析与格式化:使用TryParseExact指定精确格式解析,避免系统区域设置(如不同日期分隔规则)导致的解析错误;调整后用原格式输出,保证字符串结构不变。
  • 容错处理:解析失败时返回原匹配内容,避免因异常格式破坏整个字符串。

如果实际日期格式是dd/MM/yy而非yy/MM/dd,只需将代码中的格式字符串"yy/MM/dd HH:mm"替换为"dd/MM/yy HH:mm"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:32:17