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

C#读取XML中dd-mm-yyyy格式日期时月份显示为00如何解决?

核心问题原因

你遇到的月份显示为00的问题,是DateTime格式化字符串使用错误导致的:小写mm对应的是时间单位分钟,月份的格式化符需要使用大写MM。你转字符串时没有传递时间参数,分钟默认值为00,因此替换了原本的月份位,才会出现04-00-2021这类错误输出。

方案1:快速修复现有自定义日期格式逻辑

如果你需要保留dd-MM-yyyy的自定义日期格式,直接修改两处格式化字符串,同时改用ParseExact指定格式解析,避免不同系统区域设置导致的解析异常:

修复后的读取方法

public void ShowDateOfLatestDataAction(TextBox pTextBox, int childNodeIndex)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("./DatesAndLocations.xml");
    string date = "";
    // 可以直接用XPath定位节点,无需遍历
    XmlNode datesNode = doc.SelectSingleNode("/configs/dates");
    if (datesNode != null)
    {
        var latestDate = datesNode.ChildNodes[childNodeIndex];
        string dateStr = latestDate.Attributes[0].Value;
        // 指定格式解析,避免区域格式不兼容
        DateTime dateVal = DateTime.ParseExact(dateStr, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
        date = dateVal.ToString("dd-MM-yyyy");
    }
    pTextBox.Text = date;
}

修复后的写入方法

public void UpdateDateOfLatestDataAction(int childNodeIndex)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("./DatesAndLocations.xml");
    XmlNode datesNode = doc.SelectSingleNode("/configs/dates");
    if (datesNode != null)
    {
        var elementToUpdate = datesNode.ChildNodes[childNodeIndex];
        // 用大写MM表示月份
        elementToUpdate.Attributes[0].Value = DateTime.Now.ToString("dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
    }
    doc.Save("./DatesAndLocations.xml");
}

方案2:遵循XML标准的日期读写(使用XmlConvert)

你提到的XmlConvert相关方法并未完全弃用,只是旧的无参数重载被弃用,现在推荐使用指定XmlDateTimeSerializationMode的重载,输出符合XML Schema规范的日期格式,兼容性更强:

读取示例

// 从XML属性读取标准格式日期
DateTime dateVal = XmlConvert.ToDateTime(attributeValue, XmlDateTimeSerializationMode.Local);

写入示例

// 转为XML标准格式写入属性
elementToUpdate.Attributes[0].Value = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Local);

注意:该方案生成的日期为ISO 8601标准格式(如2024-05-20),如果需要保留你自定义的dd-MM-yyyy格式,选择方案1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:07