You need to enable JavaScript to run this app. C# 如何使用字符串子集从日期字符串列表提取DD存入新列表
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何使用字符串子集从日期字符串列表提取DD存入新列表

实现方案

固定位置字符串截取(对应你需要的字符串子集实现方式)

你存储的日期为标准ISO 8601固定格式yyyy-MM-ddTHH:mm:sszzz,各部分在字符串中的位置是完全确定的,可直接通过Substring方法截取对应位置的日部分。

  • 格式对应的索引分布(字符串索引从0开始计数):
    • 0~3位:4位年份
    • 第4位:日期分隔符-
    • 5~6位:2位月份
    • 第7位:日期分隔符-
    • 8~9位:2位日数值(即需要提取的DD部分)
    • 第10位:时间分隔符T

基于这个规则,填充列表的代码可以直接集成到你现有的结构中:

public List<string> All_Date = new List<string>();
public List<string> All_Day = new List<string>();

void Start()
{
  All_Day = new List<string>(All_Date.Count);
  // 遍历原日期列表逐个提取
  foreach (string dateStr in All_Date)
  {
    // 从字符串索引8的位置开始,截取2个字符即为日部分
    string dayValue = dateStr.Substring(8, 2);
    All_Day.Add(dayValue);
  }
}

注意:纯字符串截取的方式仅适用于严格匹配给定格式的日期字符串,如果遇到格式不标准(如日/月没有补两位零、分隔符位置变动)的异常字符串,截取结果会出现偏差。

更稳健的通用提取方式

如果存在字符串格式不统一的场景,可以优先把字符串解析为带时区的时间类型,再提取日数值,避免截取错误:

void Start()
{
  All_Day = new List<string>(All_Date.Count);
  foreach (string dateStr in All_Date)
  {
    // 解析带时区偏移的ISO格式字符串
    if (DateTimeOffset.TryParse(dateStr, out DateTimeOffset parsedTime))
    {
      // 将日数值格式化为两位补零的字符串
      string dayValue = parsedTime.Day.ToString("00");
      All_Day.Add(dayValue);
    }
  }
}

这种方式不受字符串后半段的时分秒、时区格式变动影响,只要字符串能被正常解析,就能拿到准确的日数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 04:27:04